我有以下获取请求:
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()
也不会修复。
答案 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将自动对其进行解析。