【问题标题】:Axios .get request weird behaviourAxios .get 请求奇怪的行为
【发布时间】:2020-05-07 14:12:09
【问题描述】:

我有以下获取请求:

return axios
    .get<ArticlesResponse>(SUGGESTED_ARTICLES, {
      headers: {
        'Content-Type': 'application/json',
      },
    })
    .then(onRequestSuccess)
    .catch(onRequestError);

它返回一个包含我需要的数据的对象,但是,对象内的数据字段是一个字符串,而不是一个实际的对象。有人知道为什么吗?我查了一下,发现在上面添加那个标题可以解决这个问题,但它没有。提前致谢!

我的 onRequestSucces 是:

export function onRequestSuccess<T = any>(response: AxiosResponse<T>) {
  console.log('Request Successful!', response);

  return response.data;
}

JSON.Parse() 也不会修复它。

【问题讨论】:

  • 你能显示响应的 sn-p 吗?

标签: reactjs typescript axios


【解决方案1】:

问题可能是由于 API 返回包含 invalid JSON 数据的响应,现在 JSON.parse 会抛出错误,但 Axios 通过将无效 JSON 设置为字符串来管理异常数据属性。尝试使用 Fetch API。

【讨论】:

  • 其实就是这样。现在才发现。谢谢。
【解决方案2】:

由于您使用的是 GET 请求(没有正文),因此“Content-Type”没有用处。此标头用于告诉服务器您要发送哪种类型的内容,但您没有发送任何内容。您应该只在 POST/PUT 请求上使用它。

See this question for more details on this.

为了让您的请求被读取为 JSON,您必须在 服务器 中设置标头。这将告诉浏览器您正在接收一个 JSON,然后它将由 axios 自动解析。

【讨论】:

    猜你喜欢
    • 2017-09-17
    • 1970-01-01
    • 2020-02-14
    • 2013-06-24
    • 2021-02-11
    • 1970-01-01
    • 1970-01-01
    • 2021-11-21
    • 2022-09-24
    相关资源
    最近更新 更多