控制台中"/>
响应体显示在网络中但不在控制台中
当向链接发送请求并在控制台(
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()
。
更多推荐
响应体显示在网络中但不在控制台中
发布评论