Axios .get请求异常行为

时间:2020-01-21 13:39:56

标签: reactjs typescript axios

我有以下获取请求:

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()也不会修复。

2 个答案:

答案 0 :(得分:2)

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

答案 1 :(得分:1)

由于您使用的是GET请求(没有主体),因此Content-Type无效。此标头用于告诉服务器您要发送的内容类型,但不发送。您应该仅在POST / PUT请求上使用它。

See this question for more details on this

为了将请求读为JSON,必须在服务器中设置标头。这将告诉浏览器您正在接收一个JSON,然后axios将自动对其进行解析。