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

Express接收fetch发送的POST请求时req.body为空该如何解决

问题原因

你在客户端的fetch请求中设置了Content-Type: application/json,提交的是JSON格式的请求体,但Express服务端仅配置了express.urlencoded()中间件,该中间件仅能解析application/x-www-form-urlencoded格式的表单数据,无法解析JSON格式的请求体,因此req.body会返回空对象。

解决方案

只需要在服务端注册路由前,添加JSON解析中间件即可:

// 原有表单解析中间件可保留,不影响使用
app.use(express.urlencoded({ extended: true }));
// 新增JSON格式请求体解析中间件
app.use(express.json());

app.post('/api/login', (req, res) => {
  console.log(req.body) // 此时即可正常获取到name、password参数
  res.redirect('/login')
})

补充注意点

  • 所有解析req.body的中间件必须注册在路由定义之前,否则路由执行时中间件还未生效,仍然无法获取参数
  • 如果后续需要接收FormData格式的文件上传请求,还需要额外引入multer这类第三方中间件处理

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.01 13:09:03