将Amazon SNS与Meteor.js配合使用

时间:2014-04-05 21:54:40

标签: javascript node.js amazon-web-services meteor iron-router

我在解析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?

2 个答案:

答案 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()