Einige Server, mit denen ich mich befasst habe, geben HTTP 200 für Anforderungen zurück, bei denen der Client einen Fehler in Betracht ziehen sollte, mit so etwas wie "Erfolg: Falsch" im Körper.
Dies scheint mir keine ordnungsgemäße Implementierung von HTTP-Codes zu sein, insbesondere bei fehlgeschlagener Authentifizierung. Ich habe HTTP-Fehlercodes kurz und bündig gelesen, da "4xx" angibt, dass die Anforderung erst nach einer Änderung erneut ausgeführt werden soll, während "5xx" angibt, dass die Anforderung möglicherweise gültig ist oder nicht und erneut versucht werden kann, aber erfolglos war. In diesem Fall 200: Anmeldung fehlgeschlagen, oder 200: Datei konnte nicht gefunden werden, oder 200: Parameter x fehlt, scheint definitiv falsch zu sein.
Andererseits konnte ich das Argument sehen, dass "4xx" nur ein strukturelles Problem mit der Anfrage anzeigen sollte. Das ist also richtig, um 200 zurückzugeben: Falscher Benutzer / falsches Kennwort anstatt 401 nicht autorisiert, da der Client die Anfrage stellen darf, sie aber falsch ist. Dieses Argument lässt sich so zusammenfassen, dass der Antwortcode 200 betragen sollte, wenn der Server die Anforderung verarbeiten und überhaupt eine Entscheidung treffen konnte, und der Client den Body auf weitere Informationen überprüfen muss.
Grundsätzlich scheint dies eine Frage der Präferenz zu sein. Aber das ist unbefriedigend. Wenn also jemand einen Grund hat, warum eines dieser Paradigmen korrekter ist, würde ich gerne wissen.
success: false
impliziert, dass die Anfrage fehlgeschlagen ist und Sie es wissen. Das sollte eine 500 sein. So etwas wie Ihr falscher Benutzername / Passwort wäre eine 401. Das ist nicht so vieldeutig.