我需要对 JSON 对象进行一些说明。在我的节点后端中,我收到一个 JSON 对象,在检查完所需的键/值对后,我将其发送到前端。这就是我感到困惑的地方 - 我仍然需要通过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?
}
因为在你的前端,fetch
API 接收一个缓冲区——一个字节数组,其中可以包含任何有效负载。它可以是图像、纯文本、文件或 JSON 负载。
知道后端将发送什么内容,您需要接收数据的缓冲区,然后执行.json()
API,本质上要求将缓冲区解释为表示 JSON 对象的序列化字符串,然后让 Javascript 引擎将该字符串评估(反序列化)为对象。
Fetch
是一个多用途 API,它对服务器将要发送的有效负载没有任何先验知识。您正在指示它将有效负载视为 JSON,方法是使用.json()
功能。
Besides .json()
,还有其他辅助方法来读取和解析各种其他可能的响应类型;例如,.text()
对于纯文本,.formData()
对于表单编码数据(类似于查询字符串值),.blob()
, and .arrayBuffer()
用于对返回数据进行字节级访问。您将根据您期望从 API 获得的响应类型使用适当的方法。
https://developer.mozilla.org/en-US/docs/Web/API/Fetch_API https://developer.mozilla.org/en-US/docs/Web/API/Fetch_API
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)