<p>axios não deve lançar respostas HTTP válidas</p>

Criado em 9 out. 2016  ·  3Comentários  ·  Fonte: axios/axios

Por que axios joga em status < 200 || status >= 300 ? veja defaults.js#L84
Um erro HTTP 500 significa que alcançamos o servidor e até obtivemos uma resposta válida usando o protocolo http.

Do ponto de vista do aplicativo, um erro HTTP 500 pode ser considerado uma exceção, mas isso está em um nível de abstração diferente e totalmente não relacionado à abstração HTTP.

Para ser compatível com a próxima especificação de busca, acho importante que os axios não sejam lançados no caso de respostas HTTP válidas.

A especificação de busca especifica uma propriedade response.ok , para que o desenvolvedor do aplicativo possa identificar facilmente o resultado da operação HTTP, acredito que uma abordagem semelhante possa ser útil para axios.

Veja aqui mais detalhes sobre a especificação de busca:
https://fetch.spec.whatwg.org/#dom -response-ok
https://developer.mozilla.org/en-US/docs/Web/API/Fetch_API/Using_Fetch

Comentários muito úteis

Correto, mas meu ponto é que isso não deve ser o padrão. Na verdade, isso nem deveria ser configurável.

Todos 3 comentários

Acho que você pode usar a opção de configuração validateStatus para sempre resolver quando houver uma resposta do servidor. dos documentos:

// `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
}

Correto, mas meu ponto é que isso não deve ser o padrão. Na verdade, isso nem deveria ser configurável.

Entendemos sua preocupação, mas o Axios não pretende substituir fetch nem imitar seu comportamento. Nós nem mesmo o usamos como um adaptador para fazer as chamadas (mantemos o XHR no momento).

O Axios tenta ser o mais configurável possível, fornecendo os padrões que a maioria das pessoas usará. Nesse caso, as pessoas tendem a verificar o código de status logo após uma resposta do servidor. Por exemplo:

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

É por isso que existem pacotes como fetch-check-http-status .

Queremos evitar aquela estrutura que se repete com tanta frequência. Se você deseja resolver com qualquer resposta válida do servidor, sempre pode definir validateStatus: false .

Esta página foi útil?
0 / 5 - 0 avaliações

Questões relacionadas

c0debreaker picture c0debreaker  ·  3Comentários

Spartano picture Spartano  ·  3Comentários

airtonix picture airtonix  ·  3Comentários

Baoyx007 picture Baoyx007  ·  3Comentários

ghprod picture ghprod  ·  3Comentários