我在客户端使用React + Redux,并且在NET CORE中拥有后端。 客户端使用以下方法从API获取数据:
return fetch(`api/login`, requestOptions)
.then(response => {
if(!response.ok) {
return Promise.reject(response.json() as Promise<AuthError>);
} else {
return response.json() as Promise<ILoginResponse>
}
})
requstOptions是:
const requestOptions = {
method: 'POST',
headers: {
'Accept': 'application/json',
'Content-Type': 'application/json' },
body: JSON.stringify({ username, password })
};
密码错误时,服务器返回
404 Bad request
主体为:
{"errorCode":2,"description":"Invalid Password"}
我想阅读正文,但是使用此代码,这是不可能的,因为此response.json() as Promise<AuthError>
会生成一个空对象。
有没有办法读取错误请求响应的正文?
答案 0 :(得分:-1)
您是否尝试过使用catch
,然后检查错误对象?
...
.then(response => response.json())
.then(response => console.log('Success:', JSON.stringify(response)))
.catch(error => console.dir(error));
答案 1 :(得分:-1)
“即使响应是HTTP 404或500,从fetch()返回的Promise也不会拒绝HTTP错误状态。相反,它将正常解析(ok状态设置为false),并且只会拒绝网络出现故障或是否有任何阻止请求完成的情况。”
您还可以查看Response对象文档。在这里,您可以检查Response ok是否设置为false(因此,在then子句中检查response.ok),然后可以检查Response.text属性。还要检查Response Documentation