守候你守候我
2021-07-13 16:43:13
我需要對 JSON 對象進行一些說明。在我的節(jié)點后端,我收到一個 JSON 對象,在我完成我需要的鍵/值對之后,我將它發(fā)送到前端。這就是我感到困惑的地方 - 我仍然需要通過 response.json() 將該響應對象轉換為 json。為什么?如果后端正在傳遞 JSON,那么為什么我需要將響應 obj 轉換為 JSON?// test.js (node)const testObj = { "test1": { "1": "Hello there" }}app.get('some-route', async(req,res) =>{ res.send(testObj)}// front.js (React)async someFunc(){ const response = await fetch('/some-route'); const data = await response.json(); //why?}
3 回答

幕布斯7119047
TA貢獻1794條經驗 獲得超8個贊
響應對象不僅僅是它的 JSON 部分。它包含所有 HTTP 協(xié)議元素,如headers、響應狀態(tài)等。
當您使用時,res.json()
您是在告訴您的代碼僅將 JSON 部分與所有其他內容分開。
要更多地了解 HTTP 響應,我建議您閱讀此。

墨色風雨
TA貢獻1853條經驗 獲得超6個贊
響應對象不是您從后端發(fā)送的任何內容,它將是一個Response 對象。這就是 Fetch API 的工作原理。該 Response 對象將包含大量元數據和一些方法,包括.jsonwhich Takes a Response stream and reads it to completion. It returns a promise that resolves with the result of parsing the body text as JSON。
如果不想經歷這兩個步驟,直接寫這個函數就行了。
const fetchJson = async url => {
const response = await fetch(url)
return response.json()
}
并像這樣使用它:
async someFunc(){
const data = await fetchJson('/some-route')
}
添加回答
舉報
0/150
提交
取消