我在解析Amazon SNS HTTP POST正文数据时遇到问题。我正在使用Iron Router插件来运行HTTP端点。
问题是Iron Router依赖于Connect npm模块,该模块仅解析具有以下内容类型的请求:
application/json
application/x-www-form-urlencoded
multipart/form-data
Amazon SNS发送所有以text / plain编码的数据,因此需要自定义中间件来解析正文,如下所示:Handling text/plain in Express 3 (via connect)?。
如何将此解决方案改编为Meteor或Iron Router?
答案 0 :(得分:2)
我通过meteor访问连接处理程序解决了这个问题。这是代码:
var connectHandlers;
if (typeof __meteor_bootstrap__.app !== 'undefined') {
connectHandlers = __meteor_bootstrap__.app;
}
else {
connectHandlers = WebApp.connectHandlers;
}
connectHandlers.use((function(req, res, next) {
if (req.headers['content-type'] === 'text/plain; charset=UTF-8') {
var bodyarr = [];
req.on('data', function(chunk) {
bodyarr.push(chunk);
});
req.on('end', function() {
req.body = bodyarr.join('');
next();
});
}
else {
next();
}
}));
这应该能够接受任何类型的连接中间件,而不仅仅是text / plain。
答案 1 :(得分:1)
如果有人仍在努力解决这个问题,现在使用以下内容更容易解决:
onBeforeAction: Iron.Router.bodyParser.text()