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

Node.js+Express中使用BodyParser后req.body为空问题求助

问题排查与解决方案

嘿,这个问题我之前也踩过一模一样的坑!核心原因是中间件的挂载顺序出错了,Express是按照代码编写的顺序依次执行中间件和路由的,你把body-parser放在了POST路由之后,导致请求到达路由时,请求体还没被解析,所以req.body自然是空的。

具体修正思路:

  • 把body-parser相关的中间件挂载代码,移到所有路由定义的前面
  • 保持CORS中间件在最靠前的位置,确保跨域请求能被正确处理

修正后的完整代码:

var express = require('express');
var bodyParser = require('body-parser');
var app = express();

// 先挂载CORS中间件处理跨域
app.use(function(req, res, next) {
 res.header("Access-Control-Allow-Origin", "*");
 res.header("Access-Control-Allow-Headers", "Origin, X-Requested-With, Content-Type, Accept");
 next();
});

// 接着挂载body-parser解析器,确保路由执行前请求体已被解析
app.use(bodyParser.urlencoded({ extended: true }))
app.use(bodyParser.json())

// 最后定义POST路由
app.post('/test/json/', function(req, res, next) {
 res.json(req.body);
})

app.listen(8282);

补充说明:

  • body-parser.json()专门负责解析Content-Type: application/json类型的请求体,这正是你发送{username:"Yacine"}时需要的解析器
  • body-parser.urlencoded()则是处理表单提交的application/x-www-form-urlencoded类型请求体,如果你有这类需求也能覆盖到
  • 现在重新测试你的POST请求,req.body就能正确返回你预期的{username:"Yacine"}啦

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.14 07:00:51