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 请求奇怪的行为的主要内容,如果未能解决你的问题,请参考以下文章
javascript ajax 调用通过仅使用 POST 方法的 fetch 调用:奇怪的行为是 post 后跟 get plus 再次请求所有资源?