我有以下功能(基本上直接从另一个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.params
和req.body
都是{}
。我还没有得到最简单的线索,如何引用请求中传递的包含对象的对象。
我阅读了整个console.log(req)
并发现没什么用处。我以前做过这种事情,除了请求是由一个表单提出的,而req.body
就像一个魅力。既然我正在“手动”执行请求,它就不再起作用了。整个过程都在Node.js上运行。
我做错了什么?
答案 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