以下是我常用的发帖方法:
export const post = (url: string, param: any) => {
const CancelToken = axios.CancelToken; // axios cancel request
const source = CancelToken.source();
post.prototype.source = source;
return axios.post(url, qs.stringify(param), { cancelToken:
source.token }).then((resp) => resp);
};
Run Code Online (Sandbox Code Playgroud)
这是我的发帖方法:
const postMyMethod = async () => {
await postMd(params)
.then((response: any) => {
console.log(response) // in response not getting status code
})
};
Run Code Online (Sandbox Code Playgroud)
下面是错误处理代码,如何获取响应状态代码(例如:200、400...):
axios.interceptors.response.use(
function (response) {
if (response && response.data && response.data.Code && response.data.Message) {
message.error(response.data.Message);
response.data = null;
}
return response;
},
function (error) {
if (error.response && error.response.data && error.response.data.Code && error.response.data.Message) {
message.error(error.response.data.Message);
} else {
message.error('Unknown error, please check your network ~');
}
return error;
}
);
Run Code Online (Sandbox Code Playgroud)
最后如果我这样做:
console.log(response)
Run Code Online (Sandbox Code Playgroud)
得到:Error: Request failed with status code 400
如何获取状态代码以在 postMyMethod() 中执行 if 条件?
我想在 postMyMethod() 中这样做。如何实现这一目标?
if(response.status === 200){
// do something
}
if (respone.status === 400){
// do something
}
Run Code Online (Sandbox Code Playgroud)
终于明白了:
.then((response: any) => {
console.log(response.response.status);
console.log(response.response.data);
})
Run Code Online (Sandbox Code Playgroud)
或者需要在 function error > if 条件下添加以下代码
return error.response;
Run Code Online (Sandbox Code Playgroud)
现在正在获取响应状态和失败数据。