Javascript Axios override,从数据响应中获取状态代码,而不是状态

Javascript Axios override,从数据响应中获取状态代码,而不是状态,javascript,axios,Javascript,Axios,我正在调用一个API,该API根据数据而不是响应代码定义状态代码: { data: { statusCode: 422, message: "User's not found" }, status: 200 } 在我的axios get请求中,它是从状态而不是数据中获取状态代码 return axios.get(`${process.env.BASE_URL}/users`) .then(response => { consol

我正在调用一个API,该API根据数据而不是响应代码定义状态代码:

{
  data: {
     statusCode: 422,
     message: "User's not found"
  }, 
 status: 200
}
在我的axios get请求中,它是从状态而不是数据中获取状态代码

return axios.get(`${process.env.BASE_URL}/users`)
      .then(response => {
        console.log(response);
      }).catch(err => {
        console.log(err.message);
      });
我得到了回应,但应该会被抓住,因为它是422


如何引用数据响应的statusCode,以便如果它不是200,则应转到catch语句

您可以使用
中的标准
if
语句处理。然后()


在这种情况下,您可以拦截响应、检查数据并抛出自定义错误:

// Add a response interceptor
axios.interceptors.response.use(function(response) {
    if (response.data && response.data.statusCode && !(response.data.statusCode >= 200 && response.data.statusCode < 300)) throw new Error()
    return response;
}, function(error) {
    return Promise.reject(error);
});

// Make a GET request
axios.get(url)
    .then((data) => {
        console.log('data', data)
    })
    .catch((e) => {
        console.log('error', e)
    })

检查
response.data.statusCode
值,如果它是
442
,则理想情况下应该抛出
错误
,并让它在
.catch
回调中处理

return axios.get(`${process.env.BASE_URL}/users`)
      .then(response => {
        if(response.data.statusCode===442){
           throw new Error(response.data.message); //using throw instead of Promise.reject() to break the control flow. 
        }else{
           //return the data wrapped in promise
        }      
      })
      .catch((err) => {
          console.log(err.message);
          return Promise.reject(err.message);
      });

我认为问题来自后端,后端应该返回422状态码而不是200是的,我还认为后端应该正确处理状态码。但是有什么方法可以从数据响应的状态码中找到答案吗?老兄,你是我心目中的英雄!!:)那正是我想要的
// Add a response interceptor
axios.interceptors.response.use(function(response) {
    if (response.data && response.data.statusCode) response.status = response.data.statusCode
    return response;
}, function(error) {
    return Promise.reject(error);
});
return axios.get(`${process.env.BASE_URL}/users`)
      .then(response => {
        if(response.data.statusCode===442){
           throw new Error(response.data.message); //using throw instead of Promise.reject() to break the control flow. 
        }else{
           //return the data wrapped in promise
        }      
      })
      .catch((err) => {
          console.log(err.message);
          return Promise.reject(err.message);
      });