hel*_*ere 4 javascript json node.js
我需要对 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)
}
Run Code Online (Sandbox Code Playgroud)
// front.js (React)
async someFunc(){
const response = await fetch('/some-route');
const data = await response.json(); //why?
}
Run Code Online (Sandbox Code Playgroud)
因为在前端,fetchAPI 接收一个缓冲区——一个字节数组,其中可以包含任何有效负载。它可以是图像、纯文本、文件或 JSON 负载。
知道后端将发送什么内容后,您需要接收数据缓冲区,然后对其执行 API .json(),本质上要求将缓冲区解释为表示 JSON 对象的序列化字符串,然后让 Javascript引擎将该字符串评估(反序列化)为对象。
Fetch是一个多用途 API,它对服务器将要发送的有效负载没有任何先验知识。您正在指示它使用该函数将有效负载视为 JSON .json()。
除此之外.json(),还有其他辅助方法来读取和解析各种其他可能的响应类型;例如,.text()对于纯文本、.formData()表单编码数据(类似于查询字符串值)、.blob()以及.arrayBuffer()对返回数据的字节级访问。您将根据您期望从 API 获得的响应类型使用适当的方法。
| 归档时间: |
|
| 查看次数: |
17002 次 |
| 最近记录: |