Axios: какие коды состояния HTTP-ответа приводят к then(), а какие в catch() ?

#javascript #error-handling #axios #http-status-codes

#javascript #обработка ошибок #axios #http-status-codes

Вопрос:

Предположим, у нас есть следующий код JavaScript:

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

По умолчанию, какие коды состояния HTTP ответа приводят к .then() вызову, а какие .catch() ?

Ответ №1:

Это определяется настройкой validateStatus .

По умолчанию это значение задается следующим образом в lib/defaults.js:

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

Таким образом, любые коды состояния в диапазоне 200 приведут к .then() вызову, тогда как любые другие коды состояния .catch() будут вызываться.

Его можно изменить следующим образом:

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