Ich entwickle eine einfache RESTful-API und bin total verliebt in das Minimalistische. Aber ich bin unsicher bezüglich der richtigen HTTP-Antwortcodes für verschiedene Situationen:
Falsch gebildete Abfrage
Korrekt gebildete Abfrage bezieht sich auf eine Ressource, die nicht existiert
Ressource wurde erfolgreich gelöscht
Ressource wurde erfolgreich bearbeitet
Ich denke momentan, dass 1 403 Forbidden
wäre; 2 wäre 410 Gone
; 3 und 4 wären 202 Accepted
. Klingt das richtig?
Für # 1 schlägt 403 vor, dass Ihre Anwendung die Anfrage verstanden hat, sie aber nicht erfüllen wird (d. h. der aktuelle Benutzer hat aus irgendeinem Grund keine Berechtigung, dies zu tun). Ich denke, dass 400 schlechte Anfragen in diesem Fall mehr Sinn machen könnten.
Für # 2 - würde ich denken, 404 würde mehr Sinn ergeben, d. h. Ressourcen werden nicht gefunden, es sei denn, die Ressource existierte irgendwann, und wurde dann gelöscht, in welchem Fall 410 wäre fair - aber nicht viele Kunden wissen, was mit 410 zu tun ist.
Für # 3 & amp; # 4 - 200, wenn Sie die Löschung erfolgreich durchgeführt haben, 202 wenn die Löschung in die Warteschlange gestellt wurde und zu einem späteren Zeitpunkt "Out-of-Band" behandelt wird.
RFC 2616 liefert großartige Erklärungen dazu, was jeder Antwortcode in ziemlich verständlichen Begriffen bedeutet.
1). 400 - Standardfehleranforderung, 403 bedeutet, dass die Anfrage korrekt formatiert ist, Sie aber nicht darauf zugreifen dürfen
2). 404 - Ein 410 bedeutet, dass die Ressource existiert hat, aber absichtlich verschoben wurde
3). und 4). 200, wenn die Aktion bis zum Senden der Antwort erfolgreich ausgeführt wurde, 202, wenn die Aktion ansteht. In der Praxis ist 202 wahrscheinlich für Löschaktionen (wo sie überprüft werden können), aber Sie möchten vielleicht nicht sofort eine 200 zurückgeben, so dass sie tatsächlich für den Benutzer gelöscht erscheint. Das ist eine Designfrage imho.
Holen Sie sich die Richardson & amp; Ruby-Buch - es hat einen nützlichen Anhang zu Ihrer Frage und muss auf jeden Fall gelesen werden