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.
Sie könnten einen 400: Bad Request
Header senden. Wenn das nicht Ihre Sache ist, sehen Sie sich bitte die W3C-Statuscode-Definitionen an.
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.
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.
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.
Tags und Links javascript php json http