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

为什么express开发时POST接口的req.body返回空对象{}?

问题原因

1. 客户端fetch配置拼写错误

fetch的请求头配置项为复数headers,你代码中写的是单数header,导致Content-Type: application/json没有生效,服务端express.json()中间件无法识别请求体格式,不会解析body内容,最终返回空对象。

2. 可选优化:服务端监听逻辑位置

app.listen()建议放在所有路由、中间件注册完成之后再调用,避免服务启动后部分请求处理逻辑还没注册完成的异常。


修正后的代码

客户端代码

const myData = "hello world";
const options = {
  method: "POST",
  // 修正为headers复数
  headers: {
    "Content-Type": "application/json",
  },
  body: JSON.stringify(myData),
};
fetch("http://localhost:8000/api", options);

服务端代码(优化后)

app.use(express.json({ limit: "1000mb" }));
app.use(express.urlencoded({ limit: "1000mb", extended: true }));
app.use(express.static("public"));

app.post("/api", (req, res) => {
  console.log(req.body); // 现在可以正常打印 "hello world"
  res.end(); // 注意要结束响应,避免请求超时
});

// listen放在所有逻辑注册完成后调用
app.listen(8000, function () {
  console.log("server is running");
});

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.07 10:36:02