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