流星铁:路由器在JSON时准备request.body

时间:2015-05-22 14:57:21

标签: json meteor request iron-router

目前我玩铁:路由器的解决方案为一个宁静的API。为此,我使用了.put.get ...方法,这些方法是铁路的:路由器已实现。

这是我合作的例子:

Router.route('/api', {where:'server'})
.put(function(){

  var req;
  req = this.request;
  console.log(req.body);

  this.response.end('PUT finished.');

});

当我执行以下操作时,我将得到预期的响应(PUT完成):

curl -XPUT "http://localhost:4000/api " -d'{"name": "timo"}'

但是console.log(req.body)返回一个转换为对象的奇怪值。

返回值为:

{ 
  '{"name": "timo"}\n' : '' 
}

看起来铁:路由器尝试将主体转换为对象,但没有认识到给定的请求字符串是有效的JSON字符串。

我做错了吗?我没有找到任何有用的准备铁:路由器,给定的请求体仍然是JSON。

也许它是一个更好的解决方案,不告诉铁:路由器,给定的请求是一个JSON,而不是告诉铁:路由器它不应该做任何事情所以我可以自己转换JSON字符串?

1 个答案:

答案 0 :(得分:1)

您没有在curl请求中指定内容类型。试试这个:

curl -XPUT "http://localhost:4000/api " -d'{"name": "timo"}' -H "content-type: application/json"

这对我有用:

I20150522-09:59:08.527(-7)? Request { name: 'timo' }

(没有它没有)。