Axios .get 请求奇怪的行为

Posted

技术标签:

【中文标题】Axios .get 请求奇怪的行为【英文标题】:Axios .get request weird behaviour 【发布时间】: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 吗? 【参考方案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 自动解析。

【讨论】:

以上是关于Axios .get 请求奇怪的行为的主要内容,如果未能解决你的问题,请参考以下文章

axios、nuxt 和 docker 的奇怪行为

javascript ajax 调用通过仅使用 POST 方法的 fetch 调用:奇怪的行为是 post 后跟 get plus 再次请求所有资源?

使用 Axios 的 GET 请求随机超时

如何使用@nestjs/axios 发出 api Get 请求

python cookie的奇怪行为,无法设置cookie

axios GET 请求有效,但无法将结果内容分配给变量