<p>axios sollte keine gültigen HTTP-Antworten auslösen</p>

Erstellt am 9. Okt. 2016  ·  3Kommentare  ·  Quelle: axios/axios

Warum werfen Axios status < 200 || status >= 300 ? siehe defaults.js#L84
Ein HTTP-Fehler 500 bedeutet, dass wir den Server erreicht haben und sogar eine gültige Antwort über das http-Protokoll erhalten haben.

Aus Anwendungssicht könnte ein HTTP-Fehler 500 als Ausnahme betrachtet werden, aber dies liegt auf einer anderen Abstraktionsebene und hat nichts mit der HTTP-Abstraktion zu tun.

Um mit der kommenden fetch-Spezifikation vorwärtskompatibel zu sein, halte ich es für wichtig, dass Axios bei gültigen HTTP-Antworten nicht ausgelöst wird.

Die fetch-Spezifikation gibt eine response.ok Eigenschaft an, damit der Anwendungsentwickler das Ergebnis der HTTP-Operation leicht identifizieren kann. Ich glaube, ein ähnlicher Ansatz könnte für Axios nützlich sein.

Weitere Informationen zu den Abrufspezifikationen finden Sie hier:
https://fetch.spec.whatwg.org/#dom -response-ok
https://developer.mozilla.org/en-US/docs/Web/API/Fetch_API/Using_Fetch

Hilfreichster Kommentar

Richtig, aber mein Punkt ist, dass dies nicht die Standardeinstellung sein sollte. Eigentlich sollte dies nicht einmal konfigurierbar sein.

Alle 3 Kommentare

Ich denke, Sie können die Konfigurationsoption validStatus verwenden, um immer aufzulösen, wenn eine Serverantwort vorliegt. aus den docs:

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

Richtig, aber mein Punkt ist, dass dies nicht die Standardeinstellung sein sollte. Eigentlich sollte dies nicht einmal konfigurierbar sein.

Wir verstehen Ihre Bedenken, aber Axios beabsichtigt nicht, fetch zu ersetzen oder dessen Verhalten nachzuahmen. Wir verwenden es nicht einmal als Adapter, um die Anrufe zu tätigen (wir bleiben im Moment bei XHR).

Axios versucht, so konfigurierbar wie möglich zu sein, indem es die Standardeinstellungen bereitstellt, die die meisten Benutzer verwenden. In diesem Fall neigen die Leute dazu, den Statuscode direkt nach einer Antwort vom Server zu überprüfen. Z.B:

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

Deshalb gibt es Pakete wie fetch-check-http-status .

Diese sich so häufig wiederholende Struktur wollen wir vermeiden. Wenn Sie mit einer gültigen Antwort vom Server auflösen möchten, können Sie jederzeit validateStatus: false festlegen.

War diese Seite hilfreich?
0 / 5 - 0 Bewertungen