获取 Fetch 响应数据

2022-01-20 00:00:00 fetch javascript

我正在使用 chrome devTools 来镜像 webRequest.查看网络请求,响应中有一些我想要访问的 JSON 数据

I'm using the chrome devTools to mirror a webRequest. Looking at the network request, there is some JSON data in the response that I want to get access to

右键 --> 复制为 fetch -->

Right click --> Copy as fetch -->

fetch(
    "https://www.url.com/service.svc?action=FindConversation&ID=-40&AC=1",
    {
        "credentials":"include",
        "headers":{
            "accept":"*/*",
            "accept-language":"en-US,en;q=0.9",
            "action":"FindConversation",
            "content-type":"application/json; charset=UTF-8",
            "actionid":"-40",
            "unique_identifier":"062lCufCY0i5mI9NMTRUsF87XDq9ttYIonzZQjBcCOPvzoIJFOTSI6ZVNK9lMwy_iPFY2tuZzPY."
            "x-requested-with":"XMLHttpRequest"
        },
        "referrer":"https://ballard.amazon.com/OWA/",
        "referrerPolicy":"no-referrer-when-downgrade",
        "body":"contains some body data I want to manipulate",
        "method":"POST",
        "mode":"cors"
    }
).then(res => {console.log(res)})

这会打印出如下内容:

Response {type: "basic", url: "https://url/service.svc?action=FindConversation&ID=-40&AC=1", redirected: false, status: 200, ok: true, …}
body: ReadableStream
locked: false
__proto__: ReadableStream
bodyUsed: false
headers: Headers {}
ok: true
redirected: false
status: 200
statusText: "OK"
type: "basic"
url: "https://url/OWA/service.svc?action=FindConversation&ID=-40&AC=1"
__proto__: Response

当我检查我刚刚发出的网络请求时,它似乎没有返回任何 JSON 数据,而是以 200 代码响应.这正常吗?

When I inspect the network request I just made, it looks like it isn't returning any JSON data, but responds with a 200 code. Is that normal?

我要么期望它返回 JSON 数据,要么失败.

I either expected it to return JSON data or fail.

另外,JSON 响应数据在 res 中的什么位置?

Also, where would the JSON response data be in the res?

推荐答案

这是正常现象.fetch() 返回一个 stream 对象,而不仅仅是正文.

This is normal behavior. fetch() returns a stream object and not just the body.

使用 res.json() 提取 JSON 内容.对于非 JSON 响应,请使用 res.text()

Use res.json() to extract the JSON content. For non JSON responses, use res.text()

相关文章