我使用fetch
进行API调用,一切正常但在这个特定情况下,我遇到了一个问题,因为API只返回一个字符串 - 而不是一个对象。
通常,API返回一个对象,我可以解析JSON对象并得到我想要的东西,但在这种情况下,我无法找到我从响应对象中的API获取的文本
我以为我会在身体内找到文字,但我似乎无法找到它。我在哪里看?
答案 0 :(得分:14)
答案 1 :(得分:1)
ES6语法:
fetch("URL")
.then(response => response.text())
.then((response) => {
console.log(response)
})
.catch(err => console.log(err))
答案 2 :(得分:0)
您可以通过两种不同的方式执行此操作:
第一种选择是使用response.text()
方法,但是请注意,在2019年12月,its global usage is only 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>
第二种方法是改为使用response.body
属性,该属性需要做更多的工作,但具有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>