为什么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
相关产品推荐
相关产品推荐

