使用meteorjs创建代理URL

时间:2015-04-14 22:16:13

标签: meteor

我想知道如何在meteorjs中使用Ironrouter实现以下目标:

app.route("/api/tts").get(function(req,res){
  res.type('audio/mpeg');

  var text = req.query.q;
  var request = require('request');
  var url = "https://translate.google.pl/translate_tts?ie=UTF-8&q=" + text + "&tl=en&total=1&idx=0&client=t&prev=input";
  request.get(url).pipe(res);
});

2 个答案:

答案 0 :(得分:0)

如果您已安装iron:router,那么您已经可以。您只需使用request安装meteorhacks:npm

然后你只需写:

Router.route("/api/tts", function () {
  // NodeJS request object
  var req = this.request;
  // NodeJS response object
  var res = this.response;
  res.type('audio/mpeg');

  var text = req.query.q;
  var request = Meteor.npmRequire('request');
  var url = "https://translate.google.pl/translate_tts?ie=UTF-8&q=" + text + "&tl=en&total=1&idx=0&client=t&prev=input";
  request.get(url).pipe(res);
}, { where: 'server' });

如果有效,请告诉我。

答案 1 :(得分:0)

您无法使用IronRouter,Meteor路由在客户端上完成 (@rclai的答案不起作用,因为请求仍然是从客户端发送的。)

This solution使用Meteor附带的WebApp模块来定义服务器路由正是您所需要的。

e.g。像这样的东西:

import { WebApp } from 'meteor/webapp';

WebApp.connectHandlers.use('/api/tts', (req, res, next) => {

  var text = res.query.q;
  var url = "https://translate.google.pl/translate_tts?ie=UTF-8&q=" + text + "&tl=en&total=1&idx=0&client=t&prev=input";

  HTTP.call("GET", url, {}, function(err, response){

      if(err){
         res.writeHead(500);
         res.end('Failed...');
      }
      else {
         res.end(response.content);
      }
    });

});