带有 JSON 的 bodyParser 问题

Posted

技术标签:

【中文标题】带有 JSON 的 bodyParser 问题【英文标题】:Issue w/ JSON for bodyParser 【发布时间】:2017-10-01 23:10:30 【问题描述】:

我通过 Fetch API 在我的 React 组件中发送数据,并将结果作为 JSON 返回。当在我的 Express 服务器上发布时,我使用 bodyParser 中的 jsonParser 方法来解析数据,但我只得到一个空对象。我不明白 jsonParser 有什么问题,因为如果我使用 textParser,我的数据会很好地发送。

编辑:在服务器上打印出请求 (req) 时,显示正文中没有收到任何内容。不过,这只发生在 jsonParser 上,而不是 textParser。

获取:

fetch('./test',
  method: 'POST',
  body: ["'name':'Justin'"]
)
.then((result) => 
      return result.json();
    )
.then((response) => 
      console.log(response);
    )
.catch(function(error)
      //window.location = "./logout";
     console.log(error);
    );

快递:

app.use('/test', jsonParser, (req,res) =>
   res.json(req.body);
)

【问题讨论】:

【参考方案1】:

假设你想发布 name: 'Justin' 对象,你会想要类似的东西

fetch('test', 
  method: 'POST',
  body: JSON.stringify(name: 'Justin'),
  headers: new Headers(
    'Content-Type': 'application/json; charset=utf-8'
  )
)

body 参数不接受数组(这是您传递的)。


如果您确实打算发布一个数组,只需将 body 值更改为

JSON.stringify([name: 'Justin'])

【讨论】:

以上是关于带有 JSON 的 bodyParser 问题的主要内容,如果未能解决你的问题,请参考以下文章

`app.use(bodyParser.json())` 有啥作用?

如何在 express 和 bodyParser 中接受 application/csp-report 作为 json?

使用 Node.js 发送 POST JSON 数据并接收(无 BODYPARSER)

bodyparser

bodyParser在node中被弃用解决办法

bodyParser中间件的研究