Express POST接口调用req.body为空 仅单台工作笔记本复现异常
问题描述
- 本地开发Express框架POST接口,工作笔记本上通过Postman调用时
req.body始终为null - 完全相同的代码、一致的Postman请求配置,在朋友的笔记本、个人其他笔记本上均可正常运行
- 暂未定位到工作笔记本的异常根因
接口实现代码
const express = require("express"); const bodyParser = require("body-parser"); const app = express(); app.use(bodyParser.json()); app.use(express.urlencoded({ extended: true})); const sayHi = (req, res) => { res.send("Hi!"); }; app.get("/", sayHi); app.post("/add", (req, res) => { const { a, b } = req.body; console.log(req.body) res.send(`The sum is: ${a + b}`); }); app.listen(5000, () => { console.log(`Server is running on port 5000.`); });
Postman请求配置参考

可落地排查方向
- 校验请求头配置:确认工作本Postman发起请求时携带了正确的
Content-Type: application/json请求头。部分场景下Postman本地自定义头规则、历史配置残留会覆盖自动生成的Content-Type头,导致body-parser无法识别JSON格式请求体,最终解析为null。 - 排查端口占用问题:确认本地5000端口没有被其他服务(如IIS、其他本地调试服务、系统代理组件)占用。如果请求实际被转发到同端口的其他非目标服务,会出现body解析异常,可临时将服务监听端口修改为3005等不常用端口重启测试。
- 排查网络代理/安全工具干扰:如果工作本开启了全局VPN、Fiddler/Charles等抓包工具、企业终端安全管控代理,这类工具可能篡改请求头、截断或修改请求体,导致服务端收到的请求格式非法。可临时关闭上述工具后重试请求。
- 排除Postman本地配置异常:不要复用历史保存的请求模板,在工作本Postman中新建全新请求,手动填写接口地址,选择
raw-JSON格式传入测试参数(如{"a": 1, "b": 2})后发起调用。也可直接在终端执行curl命令发起请求,绕过Postman验证接口本身是否正常,测试命令如下:
curl -X POST http://localhost:5000/add -H "Content-Type: application/json" -d '{"a":1,"b":2}'
- 校验依赖版本一致性:对比工作本与正常运行设备的
express、body-parser依赖版本,部分旧版本依赖存在特殊场景下的JSON解析兼容问题。可删除工作本项目下的node_modules文件夹与package-lock.json文件,重新执行npm install安装全新依赖后重启服务测试。 - 检查请求路径匹配:确认工作本Postman填写的请求地址没有拼写错误,避免因路径写错触发了其他隐式响应逻辑,导致拿到非预期的空body结果。
内容的提问来源于stack exchange,提问作者Abhishek Dhakad
相关产品推荐
相关产品推荐

