2009-09-01 8 views
31

Welchen HTTP-Statuscode sollte ich zurückgeben, wenn ein Client fehlerhafte Daten sendet (z. B. eine Zeichenfolge, wenn Ganzzahl erwartet wurde)?HTTP-Statuscode für ungültige Daten

Ich habe 400 Bad Request verwendet, aber wie ich über die HTTP-Dokumente lesen, die eher für HTTP-Protokoll Fehler scheint.

Ich möchte einen Statuscode verwenden, damit Flash- und AJAX-Clients zwischen Erfolg, fehlerhaften Daten und Serverfehlern unterscheiden können, ohne eine Antwort analysieren zu müssen.

Antwort

46

Genau dafür ist 400 da. Ja, es wird für die Verwendung eines schlechten HTTP-Protokolls verwendet, aber nicht ausschließlich für diesen Zweck.

+1

Nach der OP-Frage, was passiert, wenn der Client wie erwartet eine HTTP-Anfrage mit einer 'ganzen Zahl' absetzt. Nehmen wir an, dass diese ganze Zahl die 'ID' des Benutzers darstellt. Wenn der Server diesen Benutzer nicht finden kann, sollte auch eine '400' zurückgegeben werden? –

+7

Bei 404 wäre das beste Ding in dieser Instanz @KevinMeredith – DasDave

5

Ich wäre wirklich eher geneigt, die schlechten Daten zurück in den Browser einzufangen, wenn der Kunde die Übermittlungsschaltfläche trifft.

Wenn nicht, dann würde ich 400 zurück, weil als der Standard sagt:

Der Antrag nicht vom Server aufgrund ungültiger Syntax verstanden werden konnte. Der Kunde sollte die Anfrage nicht ohne Änderungen wiederholen.

+3

Sie sollten wahrscheinlich beides tun. Es gibt keine Garantie dafür, dass Ihre API von einem Browser verwendet wird. :) – weberc2