从HTTP POST请求中检索JSON

时间:2017-09-21 09:26:28

标签: javascript json node.js httprequest

我有以下功能(基本上直接从另一个SO问题的答案中获取):

function makePostRequest(requestURL, postData) {
  request(
  {
   url: requestURL,
   method: "POST",
   json: true, 
   body: postData
  },
  function(error, response, body) {
   console.log(response);
  });
}

当我用正确的requestURL调用它时,我成功地到达了这条路线:

router.post("/batchAddUsers", function(req, res) {
  console.log("Reached batchAddUsers");
});

我一直在尝试检索我发送的postData并无效。 req.paramsreq.body都是{}。我还没有得到最简单的线索,如何引用请求中传递的包含对象的对象。

我阅读了整个console.log(req)并发现没什么用处。我以前做过这种事情,除了请求是由一个表单提出的,而req.body就像一个魅力。既然我正在“手动”执行请求,它就不再起作用了。整个过程都在Node.js上运行。

我做错了什么?

1 个答案:

答案 0 :(得分:1)

我认为你并没有使用身体解析器

要在Express.js版本4及更高版本中处理HTTP POST请求,您需要安装名为body-parser的中间件模块。

body-parser提取传入请求流的整个正文部分,并在req.body上公开它。

中间件早先是Express.js的一部分,但现在你必须单独安装它。

此body-parser模块解析使用HTTP POST请求提交的JSON,buffer,string和url编码数据。使用NPM安装body-parser,如下所示。

  

npm install body-parser --save