【问题标题】:creating proxy url with meteorjs使用 meteorjs 创建代理 url
【发布时间】:2015-06-20 17:04:15
【问题描述】:

我想知道如何在 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);
});

【问题讨论】:

    标签: meteor


    【解决方案1】:

    如果您已经安装了iron:router,那么您已经可以了。您需要做的就是使用meteorhacks:npm 安装request

    然后你只需写:

    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' });
    

    让我知道这是否有效。

    【讨论】:

      【解决方案2】:

      你不能使用 IronRouter,Meteor 路由是在客户端完成的 (@rclai 的回答不起作用,因为请求仍在从客户端发送..)

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

      例如像这样:

      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);
            }
          });
      
      });
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2015-09-06
        • 1970-01-01
        • 2014-04-02
        • 1970-01-01
        • 2014-04-25
        • 1970-01-01
        • 2016-01-23
        • 2012-03-24
        相关资源
        最近更新 更多