使用 fetch() Webapi

Using fetch() Webapi

我正在尝试查看浏览器的本机网络api fetch() api 是如何工作的。到目前为止,我有这个: Sample-Code 并且工作正常。但是我不明白为什么我必须将它转换为 JSON 的流式字符串?我不确定为什么有人甚至需要通过 REST API 将 JSON 作为字符串流式传输?我很确定我在这里遗漏了一些东西,但我不确定我应该如何告诉 fetch() 将响应作为 JSON 而不是作为我必须转换为字符串的 ReadableByteStream并将其解析为 JSON.

我的问题是,

  1. 为什么 string 会在此处直播?
  2. 如何告诉 fetch() 以文本形式获取我的回复或 json 以便我可以执行 response.json()response.text() docs 中提到的]? (仅供参考,我尝试添加一个 header object 并创建一个 Header 实例并将其传递给 fetch() 都没有改变我的响应。

您只需致电

fetch("https://api.github.com/users/ajainarayanan").then(res => res.json());

这里是一些修改后的代码,结果相同

fetch("https://api.github.com/users/ajainarayanan")
  .then(res => res.json())
  .then(res => console.log('Profile: ', JSON.stringify(res, null, 2)));

显然我必须在一个 then 处理程序中执行 response.json() 并在后续的 then 处理程序中具有实际值。 Update-code。我没有意识到 response.json() 返回了另一个 Promise,我应该像承诺一样处理它。所以 console.log(response.json()) 自然只会控制台记录一个 JSON 对象而不是我实际的 json。感谢@aray12 的回答。直到我意识到 .json() 返回了一个承诺,我才意识到答案。

PS:添加这个作为答案,因为我无法在评论中添加它。