请求node.js模块无法发送简单的POST

时间:2014-05-12 17:47:08

标签: node.js http post

我这样发送:

var url     = "http://localhost:9001/v1/sanger/auth/facebook/callback",
    options = {body: JSON.stringify(params), 'Content-type': 'application/json'};

    request.post(url, options, function (error, response, body) {
      ... callbacks ... 
    });

我没有在路线中获得参数(尝试bodyparamsquery

当我使用邮差(http://cl.ly/image/473e2m173M2v)时,我会在req.body

中找到它

1 个答案:

答案 0 :(得分:1)

更好的方法(我假设您已在其他地方初始化了params变量):

request = require('request');

var options = {
  url: "http://localhost:9001/v1/sanger/auth/facebook/callback",
  method: 'POST',
  body: params,
  json: true
};

request(options, function (error, response, body) {
  ... callbacks ... 
});

您无法获得body,因为当您致电JSON.stringify(params)时,您正在将params转换为字符串,而您却没有一个json对象了。如果您将信息发送为plain/text,但告诉request您想要json,那么您的快递应用无法验证content-type,可以查看:

request.get('Content-Type'); // returns undefined

由于您需要json对象,因此您不应该这样做。只需传递json对象,就像上面的示例一样。

然后,在您的路线代码中,您可以执行req.bodyreq.param('a_param')(对于json的特定键)来获取这些值。