<p>axios не должен выдавать действительные ответы HTTP</p>

Созданный на 9 окт. 2016  ·  3Комментарии  ·  Источник: axios/axios

Почему axios бросает status < 200 || status >= 300 ? см. defaults.js#L84
Ошибка HTTP 500 означает, что мы достигли сервера и даже получили действительный ответ по протоколу http.

С точки зрения приложения ошибка HTTP 500 может считаться исключением, но это другой уровень абстракции, совершенно не связанный с абстракцией HTTP.

Я думаю, что для обеспечения прямой совместимости с предстоящей спецификацией выборки важно, чтобы axios не выдавал ошибки в случае действительных ответов HTTP.

Спецификация выборки определяет свойство response.ok , чтобы разработчик приложения мог легко идентифицировать результат операции HTTP, я считаю, что аналогичный подход может быть полезен для axios.

Пожалуйста, смотрите здесь для получения более подробной информации о спецификации выборки:
https://fetch.spec.whatwg.org/#dom-ответ-ок
https://developer.mozilla.org/en-US/docs/Web/API/Fetch_API/Использование_Fetch

Самый полезный комментарий

Правильно, но я хочу сказать, что это не должно быть по умолчанию. На самом деле это даже не должно быть настраиваемым.

Все 3 Комментарий

Я думаю, вы можете использовать параметр конфигурации validateStatus, чтобы всегда разрешать, когда есть ответ сервера. из документов:

// `validateStatus` defines whether to resolve or reject the promise for a given
// HTTP response status code. If `validateStatus` returns `true` (or is set to `null`
// or `undefined`), the promise will be resolved; otherwise, the promise will be
// rejected.
validateStatus: function (status) {
  return status >= 200 && status < 300; // default
}

Правильно, но я хочу сказать, что это не должно быть по умолчанию. На самом деле это даже не должно быть настраиваемым.

Мы понимаем ваше беспокойство, но Axios не собирается заменять fetch или имитировать его поведение. Мы даже не используем его в качестве адаптера для совершения звонков (на данный момент мы придерживаемся XHR).

Axios старается быть максимально настраиваемым, предоставляя значения по умолчанию, которые будет использовать большинство людей. В этом случае люди склонны проверять код состояния сразу после ответа сервера. Например:

fetch(url).then(verifyStatus).then(...);

Вот почему существуют такие пакеты, как fetch-check-http-status .

Мы хотим избежать этой структуры, которая так часто повторяется. Если вы хотите разрешить любой допустимый ответ от сервера, вы всегда можете установить validateStatus: false .

Была ли эта страница полезной?
0 / 5 - 0 рейтинги