无法在react js axios中获取响应代码

moh*_*n m 5 reactjs axios

以下是我常用的发帖方法:

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)

moh*_*n m 0

终于明白了:

.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)

现在正在获取响应状态和失败数据。