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

编程入门 行业动态 更新时间:2024-10-03 10:45:52

响应体显示在网络中但不在<a href=https://www.elefans.com/category/jswz/34/1771374.html style=控制台中"/>

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

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

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()

更多推荐

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

本文发布于:2024-05-30 13:19:13,感谢您对本站的认可!
本文链接:https://www.elefans.com/category/jswz/34/1770537.html
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。
本文标签:控制台   网络

发布评论

评论列表 (有 0 条评论)
草根站长

>www.elefans.com

编程频道|电子爱好者 - 技术资讯及电子产品介绍!