簡體   English   中英

為什么 req.body 返回一個空的 object?

[英]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 文本包含任何 JSON 數據類型。

原始規范只允許頂層是 object 或數組。

您使用的中間件默認執行原始規范,因此嘗試將字符串作為整個 JSON 文本發送將引發異常。

允許字符串設置strict

app.use(express.json({ limit: "1000mb", strict: false }));

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM