Node Express API解析POST请求JSON异常,req.body返回空对象求助
MERN栈后端无法读取POST请求体的解决方案
核心问题
Express 默认不会自动解析 JSON 格式的请求体,所以你后端的 req.body 才会一直返回空对象 {},哪怕前端已经发了正确的 payload。
解决步骤
在后端主文件添加解析中间件
找到你的 Express 入口文件(比如server.js或app.js),在路由挂载之前加上这两行代码:const express = require('express'); const app = express(); // 解析JSON请求体,必须放在路由前面 app.use(express.json()); // 如果需要处理表单URL编码格式的请求,再加这行 app.use(express.urlencoded({ extended: true })); // 之后再挂载你的路由 const postRouter = require('./routes/your-router-file'); app.use('/post', postRouter);确认中间件顺序
一定要把解析中间件写在所有路由定义的前面,不然路由处理函数先执行的时候,中间件还没生效,还是读不到请求体。
额外排查点
- Axios 默认会把请求头设为
application/json,如果担心可以手动指定:axios.post('http://localhost:8000/post/members', loginObj, { headers: { 'Content-Type': 'application/json' } }); - 检查路由路径是否匹配:前端请求的
/post/members和后端路由router.post('/members')挂载到/post下是匹配的,这部分没问题。 - 排查是否有其他中间件提前消耗了请求体,比如某些日志中间件或者拦截器,导致后续处理函数拿不到数据。
内容的提问来源于stack exchange,提问作者MikesCodes
相关产品推荐
相关产品推荐

