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

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.29 01:12:55