我使用 fetch进行 API 调用,一切都正常,但是在这个特殊的实例中,我遇到了一个问题,因为 API 只返回一个字符串——而不是一个对象。
fetch
通常,API 返回一个对象,我可以解析 JSON 对象并得到我想要的结果,但是在这种情况下,我很难在 response 对象中找到我从 API 获得的文本。
下面是响应对象的样子。
我以为我能在尸体里找到文字但我好像找不到,我该去哪找?
使用提取 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))
你可以通过两种不同的方式来做到这一点:
第一个选择是使用 response.text()方法,但要注意,在2019年12月,全球使用率仅为36.71% :
response.text()
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>
The second option is to use the response.body property instead, which requires a little more work but has 73.94% of global usage:
response.body
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(); })();