527 Stimmen

Welchen HTTP-Status-Antwortcode sollte ich verwenden, wenn bei der Anfrage ein erforderlicher Parameter fehlt?

Ich denke an 412 (Vorbedingung fehlgeschlagen), aber vielleicht gibt es einen besseren Standard?

528voto

Kelvin Punkte 18752

Der Status 422 scheint am geeignetsten zu sein, wenn man die spec .

Der Statuscode 422 (Unprocessable Entity) bedeutet, dass der Server den Inhaltstyp der angeforderten Entität versteht (daher ist ein 415(Unsupported Media Type)-Statuscode ist unangemessen), und die Syntax der Anforderungseinheit korrekt ist (daher ist ein 400 (Bad Request) Statuscode unangemessen ist), aber die enthaltenen Anweisungen nicht verarbeiten Anweisungen zu verarbeiten. Diese Fehlerbedingung kann zum Beispiel auftreten, wenn ein XML Request Body wohlgeformte (d.h. syntaktisch korrekte), aber semantisch fehlerhafte XML-Anweisungen enthält.

Sie geben an, dass missgebildetes Xml ein Beispiel für schlechte Syntax ist (was eine 400 erforderlich macht). Ein fehlerhafter Query-String scheint analog dazu zu sein, so dass 400 für einen wohlgeformten Query-String, dem ein Parameter fehlt, nicht angemessen erscheint.

Hinweis: Da sich der obige RFC mit WebDAV befasst, kann es zu dem Missverständnis kommen, dass 422 und einige andere nur im Zusammenhang mit WebDAV verwendet werden dürfen und ihre Verwendung außerhalb von WebDAV "nicht standardisiert" ist. Dies bedeutet jedoch nur, dass diese Statuscodes in der Kontext dieses RFC. Der Wortlaut dieser Definitionen ist so gewählt, dass er nicht spezifisch für WebDAV ist.

243voto

Gert Grenander Punkte 16548

Ich bin mir nicht sicher, ob es einen festen Standard gibt, aber ich hätte die 400 Schlechte Anfrage die in der neuesten HTTP-Spezifikation (von 2014) Dokumente wie folgt :

6.5.1. 400 Schlechte Anfrage

Der Statuscode 400 (Bad Request) zeigt an, dass der Server nicht in der Lage ist oder die Anfrage nicht bearbeiten kann oder will, weil er sie für einen Client-Fehler ist (z.B. fehlerhafte Anfragesyntax, ungültiges Request ungültige Anfrage, ungültige Nachrichtenformulierung oder irreführendes Anfrage-Routing).

36voto

Daniel Vassallo Punkte 325264

Le site WCF-API in .NET behandelt fehlende Parameter durch Rückgabe eines HTTP 404 "Endpunkt nicht gefunden"-Fehler, wenn Sie die webHttpBinding .

Le site 404 Not Found kann sinnvoll sein, wenn Sie den Namen Ihrer Webdienst-Methode zusammen mit ihrer Parametersignatur betrachten. Das heißt, wenn Sie eine Webdienstmethode exponieren LoginUser(string, string) und Sie beantragen LoginUser(string) Letzteres wird nicht gefunden.

Im Grunde würde dies bedeuten, dass die von Ihnen aufgerufene Webdienstmethode zusammen mit der von Ihnen angegebenen Parametersignatur nicht gefunden werden kann.

10.4.5 404 Nicht gefunden

Der Server hat nichts gefunden, was der Request-URI entspricht. Keine wird angegeben, ob der Zustand vorübergehend oder dauerhaft ist.

Le site 400 Bad Request als Gert schlug vor ist nach wie vor ein gültiger Antwortcode, aber ich denke, er wird normalerweise verwendet, um Probleme auf niedrigerer Ebene anzuzeigen. Er könnte leicht als eine fehlerhafte HTTP-Anfrage interpretiert werden, vielleicht fehlende oder ungültige HTTP-Header oder ähnliches.

10.4.1 400 Schlechte Anfrage

Die Anfrage konnte vom Server nicht verstanden werden, weil die Syntax. Der Client SOLLTE die Anfrage NICHT ohne Änderungen Änderungen wiederholen.

20voto

BoltClock Punkte 660640

Sie können einen 400 Bad Request Code senden. Dies ist einer der allgemeineren 4xx-Statuscodes, so dass Sie ihn für das verwenden können, was Sie beabsichtigen: Der Client sendet eine Anfrage, bei der Informationen/Parameter fehlen, die Ihre Anwendung benötigt, um sie korrekt zu verarbeiten.

8voto

Elad Meidar Punkte 734

Normalerweise würde ich 422 (Unprocessable entity) wählen, wenn etwas in den erforderlichen Parametern nicht mit den Anforderungen des API-Endpunkts übereinstimmt (z. B. ein zu kurzes Passwort), aber bei einem fehlenden Parameter würde ich 406 (Unacceptable) wählen.

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X