Nach dem folgenden Szenario
Angenommen, jemand sendet eine Anfrage an Ihren Server mit Daten, die im richtigen Format vorliegen, aber einfach keine "guten" Daten sind. Stellen Sie sich zum Beispiel vor, jemand hat einen String-Wert an einen API-Endpunkt gesendet, der einen String-Wert erwartet hat. Der Wert der Zeichenfolge enthielt jedoch Daten, die auf die schwarze Liste gesetzt wurden (z. B. um zu verhindern, dass Personen "Kennwort" als Kennwort verwenden). dann könnte der Statuscode entweder 400 oder 422 sein?
Bis jetzt hätte ich eine "400 Bad Request" zurückgegeben, was laut w3.org bedeutet:
Die Anforderung konnte vom Server aufgrund einer fehlerhaften Syntax nicht verstanden werden. Der Client sollte die Anfrage NICHT ohne Änderungen wiederholen.
Diese Beschreibung passt nicht ganz zum Umstand; Wenn Sie sich jedoch die Liste der im HTTP / 1.1-Protokoll definierten zentralen HTTP-Statuscodes ansehen, ist dies wahrscheinlich die beste Wahl.
Kürzlich hat mich jedoch jemand aus meinem Entwicklerteam darauf hingewiesen, dass beliebte APIs zunehmend HTTP-Erweiterungen verwenden, um ihre Fehlerberichte genauer zu gestalten. Insbesondere verwenden viele APIs wie Twitter und Recurly den Statuscode "422 Unprocessable Entity", wie in der HTTP-Erweiterung für WebDAV definiert. Der HTTP-Statuscode 422 lautet:
Der Statuscode 422 (nicht verarbeitbare Entität) bedeutet, dass der Server den Inhaltstyp der Anforderungsentität versteht (daher ist ein 415-Statuscode (nicht unterstützter Medientyp) unangemessen) und die Syntax der Anforderungsentität korrekt ist (daher eine 400 (fehlerhafte Anforderung) ) Statuscode ist unangemessen) konnte die enthaltenen Anweisungen jedoch nicht verarbeiten. Diese Fehlerbedingung kann beispielsweise auftreten, wenn ein XML-Anforderungshauptteil wohlgeformte (dh syntaktisch korrekte), aber semantisch fehlerhafte XML-Anweisungen enthält.
Zurück zu unserem Passwortbeispiel von oben: Dieser 422-Statuscode ist viel angemessener. Der Server versteht, was Sie versuchen. und es versteht die Daten, die Sie übermitteln; Diese Daten werden einfach nicht verarbeitet.