从获取响应对象获取文本

我使用 fetch进行 API 调用,一切都正常,但是在这个特殊的实例中,我遇到了一个问题,因为 API 只返回一个字符串——而不是一个对象。

通常,API 返回一个对象,我可以解析 JSON 对象并得到我想要的结果,但是在这种情况下,我很难在 response 对象中找到我从 API 获得的文本。

下面是响应对象的样子。 enter image description here

我以为我能在尸体里找到文字但我好像找不到,我该去哪找?

98462 次浏览

使用提取 JavaScript API,您可以尝试:

response.text().then(function (text) {
// do something with the text response
});

再看看 抓取 > 响应 > 身体接口方法 上的文件

ES6语法:

fetch("URL")
.then(response => response.text())
.then((response) => {
console.log(response)
})
.catch(err => console.log(err))

你可以通过两种不同的方式来做到这一点:

  1. 第一个选择是使用 response.text()方法,但要注意,在2019年12月,全球使用率仅为36.71% :

    async function fetchTest() {
    let response = await fetch('https://httpbin.org/encoding/utf8');
    let responseText = await response.text();
    
    
    document.getElementById('result').innerHTML = responseText;
    }
    
    
    (async() => {
    await fetchTest();
    })();
    <div id="result"></div>

  2. The second option is to use the response.body property instead, which requires a little more work but has 73.94% of global usage:

    async function fetchTest() {
    let response = await fetch('https://httpbin.org/encoding/utf8');
    let responseText = await getTextFromStream(response.body);
        
    
    document.getElementById('result').innerHTML = responseText;
    }
    
    
    async function getTextFromStream(readableStream) {
    let reader = readableStream.getReader();
    let utf8Decoder = new TextDecoder();
    let nextChunk;
        
    
    let resultStr = '';
        
    
    while (!(nextChunk = await reader.read()).done) {
    let partialData = nextChunk.value;
    resultStr += utf8Decoder.decode(partialData);
    }
        
    
    return resultStr;
    }
    
    
    (async() => {
    await fetchTest();
    })();
    <div id="result"></div>