我使用GET
调用cross-fetch
方法。我遇到的问题是我收到代码为200的响应但是正文是空的。当我进入浏览器的控制台并打开Network
选项卡时,我可以看到结果:
正如您在图像中看到的那样,响应中有一个数据。负责命中API的代码如下所示:
fetch(API_URL + 'load_packages', {
method: 'GET',
headers: {
Accept: 'application/json',
}
}).then((response) => {
console.log('LOAD PACKAGES RESPONSE: ' + JSON.stringify(response))
proceedLoadResponse(response)
})
该调用有效,因为我收到状态代码为200
的响应,但没有正文。我究竟做错了什么?
UPDATE
使用response.json()
返回{}
根据获取文档,您必须使用response.json()
以json形式隐藏响应以获取实际身体。
fetch(API_URL + 'load_packages', {
method: 'GET',
headers: {
Accept: 'application/json',
}
}).then(function(response) {
return response.json();
})
.then((response) => {
console.log('LOAD PACKAGES RESPONSE: ' + JSON.stringify(response))
proceedLoadResponse(response)
})
response
是Response
对象,它只是一个表示响应的容器对象。假设cross-fetch
只是本机fetch
的独立于平台的实现,要从响应中检索JSON,您需要使用response.json()
方法。