我是 Express 的新手,所以對于這個問題,我已經研究了很多,但我無法正確解決。所以我需要將這樣的陣列["1","2","3","4","5"]作為來自前端的有效負載傳遞,在 Express 中我需要接受它并用它做一些事情。到目前為止,我可以從前端發送并在 Express 接收,但我收到的內容看起來不正確。在快遞中,我收到:
POST / 200 3.239 ms - 97
{ '"1","2","3","4","5"': '' }
所以我對此無能為力。我試圖發送一個名為 params 的物件并接收它來做一些事情,這也不起作用。
前端標題是這樣的
Request URL: http://localhost:5000/
Request Method: POST
Status Code: 200 OK
Remote Address: [::1]:5000
Referrer Policy: strict-origin-when-cross-origin
Access-Control-Allow-Origin: *
Connection: keep-alive
Content-Length: 36
Content-Type: application/json; charset=utf-8
Date: Mon, 13 Dec 2021 23:06:58 GMT
ETag: W/"24-sEnfXlyl7goDTpCx3bZVIGauJsc"
Keep-Alive: timeout=5
X-Powered-By: Express
Accept: application/json, text/plain, */*
Accept-Encoding: gzip, deflate, br
Accept-Language: en-US,en;q=0.9
Connection: keep-alive
Content-Length: 21
Content-Type: application/x-www-form-urlencoded
DNT: 1
Host: localhost:5000
Origin: http://localhost:3000
Referer: http://localhost:3000/
sec-ch-ua: " Not A;Brand";v="99", "Chromium";v="96", "Google Chrome";v="96"
sec-ch-ua-mobile: ?0
sec-ch-ua-platform: "Windows"
Sec-Fetch-Dest: empty
Sec-Fetch-Mode: cors
Sec-Fetch-Site: same-site
User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/96.0.4664.93 Safari/537.36
與此相關的快速設定就像
var express = require("express");
...
var app = express();
...
app.use(express.json());
app.use(express.urlencoded({ extended: true }));
app.post("/", (req, res) => {
res.json({ requestBody: req.body });
});
那么我怎樣才能從 ReactJS 的前端發送一個陣列作為主體的一部分,["1","2","3","4","5"]然后在 express 中接受它作為陣列并用它做一些事情呢?
uj5u.com熱心網友回復:
您顯示的請求內容:
POST / 200 3.239 ms - 97
{ '"1","2","3","4","5"': '' }
而且,您顯示的標題:
Content-Type: application/x-www-form-urlencoded
不匹配。您的資料以純文本形式發送。它不是,application/json或者application/x-www-form-urlencoded你沒有為它安裝一個 body-parser,所以 Express 不知道如何處理它。事實上,Express 甚至不讀取它,它只是停留在傳入的流中。
您不顯示客戶端代碼,但客戶端需要使content-type您通過 POST 發送的正文內容的編碼和編碼實際匹配。然后,您需要一個用于content-typeExpress 方面的主體決議器。
由于這是一組資料,我建議使用 JSON 并發送 application/json 編碼的資料。然后,您現有的express.json()中間件將為您讀取和決議它,您可以讀取req.body.
如果您需要幫助修復客戶端,請向我們展示發送此問題的客戶端代碼。
例如,如果你從客戶端發送此fetch(),這里是從一個例子正確的MDN檔案為fetch():
// Example POST method implementation:
async function postData(url = '', data = {}) {
// Default options are marked with *
const response = await fetch(url, {
method: 'POST', // *GET, POST, PUT, DELETE, etc.
headers: {'Content-Type': 'application/json'},
body: JSON.stringify(data) // body data type must match "Content-Type" header
});
return response.json(); // parses JSON response into native JavaScript objects
}
postData('https://example.com/answer', { answer: 42 })
.then(data => {
console.log(data); // JSON data parsed by `data.json()` call
});
uj5u.com熱心網友回復:
你應該不發送呼叫的物件params。由于它的 POST 請求,您應該將陣列作為請求正文的屬性發送。然后它將req.body在 Express 應用程式的屬性中可用。
轉載請註明出處,本文鏈接:https://www.uj5u.com/ruanti/380240.html
標籤:javascript 节点.js 反应 表达
