【问题标题】:Cross-fetch - GET returns response with no body交叉获取 - GET 返回没有正文的响应
【发布时间】:2018-08-29 17:12:14
【问题描述】:

我正在使用cross-fetch 调用GET 方法。我遇到的问题是我收到代码为 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 的响应,但没有正文。我做错了什么?

更新

使用response.json() 返回{}

【问题讨论】:

  • 也许 API 没有响应。可以把网址放在 Postman 或其他类似应用中吗?
  • 正如您在屏幕截图中看到的那样,有一个响应。 Postam 也会显示回复
  • 我不知道是不是每个人,但我看不到图像。

标签: javascript reactjs api fetch


【解决方案1】:

根据获取文档,您必须使用 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)
    })

【讨论】:

  • 我会在一小时内检查它,但它似乎是我错过的东西
  • 它有帮助!非常感谢
【解决方案2】:

responseResponse 对象,它只是一个代表响应的容器对象。假设 cross-fetch 只是原生 fetch 的平台无关实现,要从响应中检索 JSON,您需要使用 response.json() 方法。

【讨论】:

  • response.json() 返回{}
  • @PatrykJabłoński 我没有看到你的问题中提到了这一点。
  • 我刚刚更新了问题,这样会更清楚
猜你喜欢
  • 2019-10-28
  • 1970-01-01
  • 2020-11-12
  • 2020-08-01
  • 2019-02-07
  • 1970-01-01
  • 1970-01-01
  • 2013-11-28
  • 1970-01-01
相关资源
最近更新 更多