204 No Content
ist eine beliebte Antwort für DELETE
und gelegentlich PUT
auch.
Wenn Sie jedoch HATEOAS implementieren, ist es 200 OK
möglicherweise idealer , ein mit folgenden Links zurückzugeben. Dies liegt daran, dass eine HATEOAS REST-API dem Client Kontext bereitstellt. Stellen Sie sich den Speicherort vor, zu dem eine Benutzeranwendung navigiert, nachdem ein Löschbefehl erfolgreich ausgegeben wurde. Hier ist ein kurzer Artikelauszug mit mehr Diskussion darüber. Weitere Informationen finden Sie im Blog-Artikel.
Vermeiden Sie 204 Antworten, wenn Sie eine HATEOAS-Anwendung erstellen.
Dies ist eine Lektion über das REST-API-Design, die ich beim Erstellen nicht trivialer REST-APIs gelernt habe. Um den Client so gut wie möglich zu unterstützen, sollte eine REST-API keine 204 (kein Inhalt) Antworten zurückgeben.
Aus Sicht des Dienstes kann eine Antwort 204 (kein Inhalt) eine vollkommen gültige Antwort auf eine POST-, PUT- oder DELETE-Anforderung sein. Insbesondere für eine DELETE-Anfrage erscheint dies sehr angemessen, denn was können Sie noch sagen?
Aus der Sicht eines richtigen HATEOAS-fähigen Clients ist eine 204-Antwort jedoch problematisch, da keine Links zu folgen sind. Wenn Hypermedia als Engine für den Anwendungsstatus fungiert und keine Links vorhanden sind, gibt es keinen Status. Mit anderen Worten, eine Antwort 204 wirft den gesamten Anwendungsstatus weg.
Dieser Artikel behandelt POST
, PUT
, DELETE
und GET
. Hier ist die spezifische Diskussion über DELETE
:
Antworten auf DELETE-Anfragen
Eine DELETE-Anforderung repräsentiert die Absicht, eine Ressource zu löschen. Wenn der Dienst eine DELETE-Anforderung erfolgreich verarbeitet, was kann er dann tun, als eine 204 (kein Inhalt) zurückzugeben? Immerhin wurde die Ressource gerade entfernt.
Eine Ressource ist häufig Mitglied einer Sammlung oder gehört auf andere Weise einem Container. Beispielsweise stellt http://foo.ploeh.dk/api/tags/rock ein "Rock" -Tag dar. Eine andere Sichtweise ist jedoch, dass die / rock-Ressource im Tag-Container enthalten ist (der selbst ein ist) Ressource). Dies sollte den Benutzern von Atom Pub bekannt sein.
Stellen Sie sich vor, Sie möchten die Ressource http://foo.ploeh.dk/api/tags/rock löschen . Um dieses Ziel zu erreichen, stellen Sie eine DELETE-Anfrage dagegen. Wenn Ihr Kunde nur einen 204 (kein Inhalt) zurückerhält, hat er nur seinen Kontext verloren. Wo geht es von dort aus? Wenn Sie den Status des Clients nicht beibehalten, wissen Sie nicht, woher Sie kamen.
Anstatt 204 (kein Inhalt) zurückzugeben, sollte die API hilfreich sein und Orte vorschlagen, an die Sie gehen können. In diesem Beispiel ist meiner Meinung nach ein offensichtlicher Link zu http://foo.ploeh.dk/api/tags - dem Container, aus dem der Client gerade eine Ressource gelöscht hat. Vielleicht möchte der Kunde mehr Ressourcen löschen, das wäre also ein hilfreicher Link.