You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Node 9+Express 4环境下Body-parser无法获取请求体数据问题

解决Express服务器无法获取PATCH请求体数据的问题

Hey there! Let's break down why your PATCH request isn't passing data to your Express server, even though you've set up bodyParser.json().

核心问题:客户端请求格式不匹配

你的Express服务器已经正确配置了bodyParser.json()来解析JSON格式的请求体,但你的React端fetch请求有两个关键问题:

  • 直接传递JavaScript对象作为body,fetch不会自动将其序列化为JSON字符串
  • 没有设置Content-Type请求头,服务器无法识别请求体的格式,导致bodyParser.json()无法解析

修复步骤

修改你的客户端fetch代码,做以下两处调整:

  1. 用JSON.stringify()把请求体对象转为JSON字符串
  2. 添加headers选项,指定Content-Type: application/json

修改后的客户端代码:

fetch('/animals', {
  method: 'PATCH',
  headers: {
    'Content-Type': 'application/json'
  },
  body: JSON.stringify({name: 'kitten'})
})

服务器端代码确认

你的服务器端配置是正确的,app.use(bodyParser.json())已经能正确解析JSON格式的请求体,不需要额外添加urlencoded解析器(除非你还要处理表单数据)。另外注意你的GET请求里打印的是res.body,应该是req.body,不过这不是当前问题的重点。

为什么bodyParser.urlencoded对你无效?

bodyParser.urlencoded是用来解析application/x-www-form-urlencoded格式的表单数据的,而你现在要传递的是JSON数据,所以这个解析器自然无法处理你的请求体,这就是为什么之前尝试它没用的原因。

内容的提问来源于stack exchange,提问作者DORRITO

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.15 04:19:33