Postman发送POST请求时,body里的JSON数据没传到后端怎么办? 设计师素红 提问于 2026-02-07 09:06:22 阅读 65 前端 在用Postman测试用户注册接口时,发现后端总是收到空对象… 我设置了请求体为raw JSON格式,参数写了 { "username": "test", "email": "test@example.com" } 但后端Node.js打印出来的req.body一直是空的。试过把Content-Type头设成application/json,也尝试过x-www-form-urlencoded格式都不行。明明在本地Postman测试GET请求没问题啊,这到底是哪里出错了? Postman 我来解答 赞 9 收藏 分享 生成中... 手机扫码查看 复制链接 生成海报 反馈 发表解答 您需要先 登录/注册 才能发表解答 2 条解答 UE丶燕丽 Lv1 这问题我遇到过好多次了,新手特别容易踩这个坑。我来帮你一步步排查: 第一,确认Postman设置是否正确: 1. 在Postman的body选项卡里,确保选择了raw选项 2. 右上角下拉菜单要选JSON格式(不是Text) 3. 确认Content-Type头确实是application/json(Postman有时会偷偷改掉) 第二,Node.js后端这边,必须使用body解析中间件。如果你用的是Express,最常见的坑就是忘记加这行代码: const express = require('express'); const app = express(); // 必须加上这两行才能解析JSON请求体 app.use(express.json()); app.use(express.urlencoded({ extended: true })); app.post('/register', (req, res) => { console.log(req.body); // 现在应该能正常输出了 }); 为什么需要中间件?因为HTTP请求体默认是二进制流,需要专门解析成JSON对象。Express 4.x版本后把body解析器拆分成独立中间件了,不像老版本内置。 如果还是不行,可以试试这个更健壮的方案: const bodyParser = require('body-parser'); app.use(bodyParser.json({ verify: (req, res, buf) => { try { JSON.parse(buf.toString()); } catch(e) { res.status(400).send('Invalid JSON'); throw new Error('Invalid JSON'); } } })); 这里加了JSON格式验证,能帮你发现请求体格式问题。 补充几个常见踩坑点: - 检查路由是否正确定义为POST方法 - 确保没有其他中间件修改了请求体 - 如果用到了代理或网关,检查是否有拦截修改 测试时可以先用最简单的代码验证: app.post('/test', (req, res) => { console.log('Headers:', req.headers); console.log('Raw body:', req.rawBody); res.send(req.body); }); 如果还是不行...那就该请咖啡了(开玩笑)。可以把Postman的完整请求截图和Node控制台输出发出来,我再帮你看看。 回复 点赞 2026-03-08 10:06 UX永莲 Lv1 试试这个:检查是否漏了中间件配置。Express需要加app.use(express.json())来解析JSON请求体。没有这个中间件,req.body会是空对象。 回复 点赞 8 2026-02-07 09:07 加载更多 相关推荐 2 回答 37 浏览 Postman发送JSON请求时,Body数据总是被转义怎么办? 在Postman测试接口时,我需要发送JSON格式的请求体,但发现Body里的双引号被自动转义成"了。比如输入{"name": "测试"},发送后服务器收到的是"name": "测试",导致接口报错。... 程序员兴瑞 工具 2026-02-10 09:12:33 2 回答 38 浏览 Postman发送JSON请求包含CSS样式字符串时返回400错误怎么办? 我在Postman里测试API时,发送POST请求的JSON数据里有一个字段需要包含CSS样式字符串,比如: body { background-color: #f0f0f0; font-family... 闲人俊蓓 前端 2026-02-14 20:28:06 1 回答 11 浏览 Postman数据驱动测试怎么读取外部JSON文件里的多组参数? 我在用Postman做接口的数据驱动测试,想从外部JSON文件里读取多组测试数据,但每次运行只跑第一条,后面的都没执行。是不是我的数据结构写错了? 我试过把JSON放在data里,也检查了Collec... Designer°爱娜 工具 2026-03-09 16:19:22 1 回答 30 浏览 Postman 发送 POST 请求时 HTML 表单数据怎么传? 我在用 Postman 测试一个登录接口,后端是接收 HTML 表单格式的 POST 数据(Content-Type: application/x-www-form-urlencoded),但我试了好... ლ玉英 前端 2026-03-04 03:19:28 1 回答 39 浏览 Postman 中如何正确发送带 Cookies 的请求? 我在用 Postman 调试一个需要登录态的接口,后端返回了 Set-Cookie,但后续请求好像没自动带上 Cookie。我手动在 Headers 里加了 Cookie 字段也不行,是不是哪里配置错... 书生シ静静 工具 2026-03-02 19:49:26 1 回答 22 浏览 Postman Collection Runner 里怎么获取上一个请求的响应数据? 我在用 Postman 的 Collection Runner 跑一组接口,第二个请求需要带上第一个请求返回的 token,但不知道怎么在 Runner 里把前一个响应的数据传给下一个请求。 我试过在... ლ素平 工具 2026-02-26 23:03:18 2 回答 40 浏览 Postman设置代理后请求被拦截,但直接访问正常? 我在用Postman测试API时配置了公司代理,但发送请求一直报错“Proxy Connection Refused”,而如果直接在浏览器访问同一接口却能正常返回数据。这是代理配置哪里出问题了? 我的... 打工人一可 工具 2026-01-25 22:03:25 2 回答 75 浏览 为什么Postman集合里的环境变量在循环请求时没生效? 我在用Postman集合测试接口时,给集合绑定了环境变量,但在循环发送请求时发现变量值没被替换,直接显示成{{var_name}}。比如我设置了baseURL变量,但请求地址还是原样。 尝试过在集合设... 庆庆(打工版) 工具 2026-01-25 21:22:31 1 回答 6 浏览 Postman里怎么用变量动态替换请求URL中的参数? 我在Postman里设置了一个环境变量userId,值是123,想在GET请求的URL里用它,比如https://api.example.com/users/{{userId}}。但每次发请求都报40... 开发者羽沫 工具 2026-03-10 17:45:17 1 回答 11 浏览 Postman变量怎么在请求体里用? 我在Postman里设置了环境变量token,但在请求体里引用的时候总是报错。 比如我这样写:{{token}},结果发出去的请求里还是原样字符串,没替换成实际值。是不是只能在Headers里用变量?... 开发者樱潼 工具 2026-03-08 19:30:21
第一,确认Postman设置是否正确:
1. 在Postman的body选项卡里,确保选择了
raw选项2. 右上角下拉菜单要选
JSON格式(不是Text)3. 确认Content-Type头确实是
application/json(Postman有时会偷偷改掉)第二,Node.js后端这边,必须使用body解析中间件。如果你用的是Express,最常见的坑就是忘记加这行代码:
为什么需要中间件?因为HTTP请求体默认是二进制流,需要专门解析成JSON对象。Express 4.x版本后把body解析器拆分成独立中间件了,不像老版本内置。
如果还是不行,可以试试这个更健壮的方案:
这里加了JSON格式验证,能帮你发现请求体格式问题。
补充几个常见踩坑点:
- 检查路由是否正确定义为POST方法
- 确保没有其他中间件修改了请求体
- 如果用到了代理或网关,检查是否有拦截修改
测试时可以先用最简单的代码验证:
如果还是不行...那就该请咖啡了(开玩笑)。可以把Postman的完整请求截图和Node控制台输出发出来,我再帮你看看。
app.use(express.json())来解析JSON请求体。没有这个中间件,req.body会是空对象。