[英]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.