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

React调用Node.js+Express评论接口时请求体为undefined求助

排查React调用Express评论接口时请求体undefined的问题
  • 检查前端请求的Content-Type与数据格式
    确保请求头包含Content-Type: application/json,并且请求体是JSON字符串:

    • 用fetch的话:
      fetch('/api/comments', {
        method: 'POST',
        headers: {
          'Content-Type': 'application/json',
        },
        body: JSON.stringify({ content: '测试评论', postId: 1 })
      })
      
    • 用axios的话默认会自动处理Content-Type,但如果手动修改过请求头,要确认没删掉该配置。
  • 确认后端express.json()中间件的挂载顺序
    所有需要解析JSON请求体的路由,必须在app.use(express.json())之后挂载。比如:

    // 正确顺序:先加载解析中间件,再挂载路由
    app.use(express.json());
    app.use('/api/posts', postsRouter);
    app.use('/api/comments', commentsRouter);
    

    如果评论路由在express.json()之前挂载,后端无法解析请求体,会直接返回undefined。

  • 检查前端请求的HTTP方法是否正确
    确认前端用的是POST方法(和Postman调用一致),如果误写成GET,GET请求没有请求体,后端自然拿不到req.body。

  • 排查后端路由的匹配规则
    确保评论接口的路由路径和前端请求的路径完全一致,比如后端是router.post('/'),前端要请求/api/comments而非/api/comments/xxx,避免路由不匹配导致解析中间件未生效。

  • 验证后端验证逻辑的影响
    虽然移除了required: true,但如果用了Joi/express-validator等工具,检查是否有其他验证规则在解析body之前就抛出错误,导致后续代码拿不到req.body。可以暂时注释所有验证逻辑,测试是否能正常接收请求体,再逐步排查。

内容的提问来源于stack exchange,提问作者Kevin

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.08 18:25:28