Express+body-parser+Postman:POST请求体解析失败求助
POST请求体为空的排查与解决
使用Express 4.18.2和body-parser 1.20.1时,POST接口/transaction的req.body始终为空,可按以下步骤排查解决:
排查步骤
检查请求头
Content-Typebody-parser.json()中间件仅解析Content-Type为application/json的请求。如果请求未设置该头,中间件不会处理请求体,导致req.body为空。在请求工具(如Postman)中,务必添加请求头:Content-Type: application/json。验证请求体JSON格式
若请求体JSON存在语法错误(如引号不闭合、多余逗号等),body-parser无法解析,req.body也会为空。确保请求体是合法JSON,示例:{ "amount": 100, "sender": "userA", "recipient": "userB" }确认中间件挂载顺序
你的代码已正确挂载app.use(bodyParser.json());,且该中间件在所有路由之前,这一步无需调整。可选:使用Express内置解析器
Express 4.16.0+内置了body-parser功能,可替换掉单独安装的body-parser,直接使用:app.use(express.json());功能与
bodyParser.json()一致,可避免版本兼容问题。
你的代码:
const express = require("express"); const bodyParser = require("body-parser"); const app = express(); app.use(bodyParser.json()); app.get("/blockchain", function (req, res) {}); app.post("/transaction", function (req, res) { console.log(req.body); console.log(req.body.amount); res.sendStatus(200); }); app.get("/mine", function (req, res) {}); app.listen(3000, function () { console.log("Listening on port 3000..."); });
请求截图:

内容的提问来源于stack exchange,提问作者Yotam
相关产品推荐
相关产品推荐

