Axios:哪些HTTP响应状态代码导致then,哪些导致catch?

问题描述

假设我们有以下JavaScript代码

axios.get('/some-url')
  .then((response) => {...})
  .catch((error) => {...});

认情况下,响应的哪个HTTP状态代码导致调用.then(),而在.catch()中导致响应?

解决方法

这取决于设置validateStatus

默认情况下,此设置在lib/defaults.js中进行如下设置:

validateStatus: function validateStatus(status) {
    return status >= 200 && status < 300;
}

因此,任何200范围内的状态代码都将导致调用.then(),而其他任何状态代码都将导致调用.catch()

可以进行如下更改:

let myAxiosInstance = axios.create({
    validateStatus: function (status) {
        return status >= 200 && status < 500;
    }
});