【问题标题】:Retrieve JSON from HTTP POST request从 HTTP POST 请求中检索 JSON
【发布时间】:2017-09-21 09:26:28
【问题描述】:

我有以下功能(基本上直接取自另一个 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 上运行。

我做错了什么?

【问题讨论】:

  • 什么是postData
  • 你用的是 express js 吗?
  • 你在使用 express.js 吗?
  • @SangramBadi 是的,我正在使用 express.js。 @Quentin 好的,我在做一些愚蠢的事情:postData 是一个数组,因为我需要它是一个用于 MongoDB 数据库操作的数组。我不确定是否最好将其转换为 JSON(以及如何转换),或者是否应该更改请求中的某些内容。

标签: javascript json node.js httprequest


【解决方案1】:

我认为你没有安装 body-parser

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

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

该中间件之前是Express.js 的一部分,但现在您必须单独安装它。

这个正文解析器模块解析使用 HTTP POST 请求提交的 JSON、缓冲区、字符串和 url 编码数据。使用 NPM 安装 body-parser,如下所示。

npm install body-parser --save

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2014-11-26
    • 2011-08-03
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-12-03
    • 2020-01-09
    相关资源
    最近更新 更多