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

Fetch API发送对象载荷时Node后端req.body为空如何解决

问题原因

fetch发起POST请求时不会自动序列化JavaScript对象,你手动设置了Content-Type: application/json,却直接把JS对象类型的faqlist赋值给body字段,最终传输的载荷不符合JSON格式规范,后端解析失败就会返回空对象,网络面板也无法正常展示结构化的请求内容。
另外需要确认Express后端是否正确配置了JSON请求体解析中间件,缺少该配置时即使前端传参正确也无法读取req.body。

修复步骤

前端代码修正

给body字段的参数加上JSON.stringify()序列化处理,修正后的核心代码:

let faqlist = "";
// 从外部API拉取FAQ列表
await axiosinstance
  .get("https://目标外部API地址/api/faq")
  .then((res) => {
    faqlist = res.data;
    console.log("FAQ列表内容:", faqlist);
    console.log("FAQ列表数据类型:", typeof faqlist);
    // 提交到自身后端
    fetch("/create-page", {
      method: "POST",
      headers: {
        Accept: "application/json",
        "Content-Type": "application/json",
      },
      body: JSON.stringify(faqlist), // 序列化JS对象为JSON字符串
    });
  });

补充:当前代码混用了await和.then()异步写法,逻辑可正常运行,但统一为async/await写法可提升代码可读性。

后端配置校验

确保Express服务在定义/create-page路由前,已经注册了内置的JSON解析中间件,配置参考:

const express = require('express');
const app = express();

// 注册JSON请求体解析中间件,Express 4.16及以上版本内置支持,无需额外安装body-parser依赖
app.use(express.json());

// 后续再定义业务路由
app.post('/create-page', (req, res) => {
  console.log(req.body); // 此处即可正常接收到前端传递的FAQ列表数据
  // 编写后续页面创建逻辑
})

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.28 15:57:14