[英]why is req.body returning an empty object?
正如标题所述,req.body 打印出一个空的 object 或 {}。 我查看了其他一些帖子,发现这是一个常见问题,但我发现的已发布解决方案均未解决该问题。
客户端代码
const myData = "hello world";
const options = {
method: "POST",
header: {
"Content-Type": "application/json",
},
body: JSON.stringify(myData),
};
fetch("http://localhost:8000/api", options);
服务器端 node.js 代码
app.use(express.json({ limit: "1000mb" }));
app.use(express.urlencoded({ limit: "1000mb", extended: true }));
app.listen(8000, function () {
console.log("server is running");
});
app.use(express.static("public"));
app.post("/api", (req, res) => {
console.log(req.body);
});
编辑:我相信 body-parser 已经成为 express 的一部分,并且 express 通过
app.use(express.json({ limit: "1000mb" }));
app.use(express.urlencoded({ limit: "1000mb", extended: true }));
你有两个问题。
你的直接问题是你打错了字。 您需要传递给fetch
的选项名称是headers
(复数)而不是header
。
由于您没有说您正在发送 JSON,因此您完全绕过了 JSON 解析中间件。
当前的 JSON 规范允许 JSON 文本包含任何 JSON 数据类型。
原始规范只允许顶层是 object 或数组。
您使用的中间件默认执行原始规范,因此尝试将字符串作为整个 JSON 文本发送将引发异常。
允许字符串设置strict
:
app.use(express.json({ limit: "1000mb", strict: false }));
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.