Wie lautet die entsprechende HTTP-Antwort für ungültige Daten, die vom Benutzer gesendet wurden?

7

Ich experimentiere mit JSON und HTTP-Antwortcodes. Ich sende ein Formular über eine AJAX-Anfrage und ich muss natürlich die Daten auf der Serverseite überprüfen.

Meine Idee ist, mit einer "200 OK" -Antwort (mit einer Bestätigungsnachricht als Hauptteil) zu antworten, wenn der Beitrag erfolgreich ist. Ich weiß nicht, worauf ich reagieren soll, wenn die vom Benutzer gesendeten Daten ungültig sind.

    
rich97 07.09.2011, 20:04
quelle

7 Antworten

7

Implementieren Sie einfach ein Standardprotokoll wie JSON-RPC . Es hat Fehlerbehandlung, Parameterübergabe usw.

Anfrage:

%Vor%

Antwort:

%Vor%

Und bei einem Fehler:

%Vor%

Es ist ziemlich flexibel und ist Standard ...

    
ircmaxell 07.09.2011, 20:13
quelle
10

Sie könnten einen 400: Bad Request Header senden. Wenn das nicht Ihre Sache ist, sehen Sie sich bitte die W3C-Statuscode-Definitionen an.

>     
Nightfirecat 07.09.2011 20:06
quelle
7

Senden Sie ein JSON-Objekt zurück:

%Vor%

Ich bevorzuge auf diese Weise Signalisierungsfehler bei einem Dienst. Das Hantieren mit HTTP-Statuscodes scheint nicht richtig zu sein, da ALLES über die eigentliche HTTP-Anfrage selbst gut funktionierte - es war nur, dass die Anfrage nicht den Erwartungen des Dienstes entsprach.

    
Marc B 07.09.2011 20:07
quelle
1

Hängt vom Zweck der API ab. Wenn es Ihre (private) ist, dann antworten Sie mit HTTP-Status 400 wie Nightfirecat vorgeschlagen. Wenn es eine öffentliche API ist, senden Sie eine aussagekräftige Fehlermeldung, um Entwicklern zu helfen.

    
johndodo 07.09.2011 20:12
quelle
0

Hier ist die vollständige Liste von HTTP-Statuscodes. Der erste, der für Ihre Situation in Frage kommt, ist 400 Bad Request, aber das wird normalerweise verwendet, um einen Fehler in der HTTP-Syntax anzuzeigen, anstatt einen Fehler im Body-Inhalt. Trotzdem, ohne weitere Informationen würde ich mit diesem gehen.

In bestimmten Fällen konnte ich abhängig von der genauen Art der Daten, die Sie erhalten, eines von 403, 404, 410, 413 oder vielleicht auch anderen als geeignete Antwort sehen.

    
David Z 07.09.2011 20:06
quelle
0

Entweder 400 (generisch), oder genauer gesagt: Ссылка

    
Julian Reschke 07.09.2011 20:36
quelle
0

Ich sehe das normalerweise so, dass Sie die HTTP-Antwortcodes für Dinge verwenden, die sich auf das HTTP-Protokoll beziehen, nicht auf Ihre Anwendungsfehler. Dann geben Sie von Ihrer HTTP-Antwort JSON zurück, die Erfolg oder Fehlschlag und beliebige zurückgegebene Daten angibt. Zum Beispiel könnten Sie dies zurückgeben:

%Vor%

Dann schaut Ihr Code, der sich die Antwort ansieht, zuerst auf den statusCode und je nachdem, ob das erfolgreich ist oder nicht, sucht er nach anderen Daten.

Wenn Sie sich vorstellen, wie diese Antwort vom Aufrufer verwendet wird, finde ich es nützlich, unterschiedliche Codepfade für Fehler auf Anwendungsebene vs. Transportlevel zu haben. Wenn Sie an einen jQuery.ajax() -Aufruf denken. Der Erfolgshandler wird aufgerufen, wenn der HTTP-Statuscode ein erfolgreicher Code ist. Der Fehlerhandler wird aufgerufen, wenn der HTTP-Statuscode nicht erfolgreich ist. Auf diese Weise können Sie allgemeine Fehlerhandler für alle Transportebenenfehler mit einem Ajax-Fehlerhandler haben und dann können Sie Ihre spezifische Fehlerbehandlung auf Anwendungsebene im Erfolgshandler ablegen, indem Sie den Statuscode der Anwendungsebene im zurückgegebenen JSON untersuchen. Wenn Sie mit dem Fehler 400 gehen, dann müssen Sie für jeden Ajax-Aufruf einen ganz anderen Fehlerhandler codieren, um sowohl die Transportfehler als auch die Anwendungsebenenfehler zu behandeln.

    
jfriend00 07.09.2011 20:12
quelle

Tags und Links