最新消息:雨落星辰是一个专注网站SEO优化、网站SEO诊断、搜索引擎研究、网络营销推广、网站策划运营及站长类的自媒体原创博客

响应体显示在网络中但不在控制台中

网站源码admin61浏览0评论

响应体显示在网络中但不在控制台中

响应体显示在网络中但不在控制台中

当向链接发送请求并在控制台(

console.log(res)
console.log(res.body)
)中记录响应时,会显示一个 ReadableStream,但其中没有任何内容。

bodyUsed
值也设置为
false
我不明白为什么。

我的后端是 Express:

app.post('/newemail', async (req, res) => {
  const email_client = new Emails();
  let inbox = await email_client.create();
  res.set({'Content-Type': 'application/json'})
  res.json(inbox)
})

我正在获取它:

fetch('url', {'method': 'post'}).then(e => console.log(e.body))

当我右键单击复制 res.body 对象时,它复制为

{}
显示其中没有任何内容。但是,在“网络”选项卡中,它显示了正确的响应。

我是否需要向请求添加其他标头或更改我在正文中发送信息的方式?非常感谢

回答如下:

可以参考

fetch()
方法的文档。它在 Promise 被 resolved 后返回一个
Response
对象。此 Response 对象是“原始”对象,包含响应的数据流,即您通过
Response.body
.

访问的数据流

为了使用流,可以使用一些现有的方法如

blob
/
text
/
json
,可以将流转换成更易读的格式。

在这种情况下,由于它是一个JSON对象,您可以使用

Response.json()
方法等待流结束并解析为JSON格式。

您案例的示例代码如下:

fetch('url', { method: 'post' })
  .then((e) => e.json())
  .then((json) => console.log(json));

注意

.json()
方法也返回一个 Promise!这就是为什么你需要在 Promise 中链接你的
.then()

发布评论

评论列表(0)

  1. 暂无评论