Angenommen, ich habe eine API, über die Sie Benutzer erhalten können:
GET /RESTAPI/user/
Und Sie können Benutzer löschen durch:
DELETE /RESTAPI/user/123
Was ist die RESTful-Konvention darüber, was der Antwortkörper des DELETE enthalten sollte? Ich habe erwartet, dass es die neue Liste aller Benutzer sein sollte, die jetzt nicht mehr den Benutzer mit der ID 123 enthält.
Das Googeln brachte mir keine befriedigenden Antworten. Ich habe nur Meinungen dazu gefunden, aber gibt es keine strenge Definition von RESTful Services ?
Dies ist KEIN Duplikat von Was sollte ein RESTful API POST / DELETE im Body zurückgeben? und Welche REST PUT / POST / DELETE-Aufrufe sollten durch eine Konvention zurückgegeben werden? da diese Frage nach einer strengen Definition in Bezug auf LÖSCHEN fragt. Diese Fragen wurden nur durch lose Meinungen beantwortet.
quelle
REST ist ein Architekturstil, der von Fielding in Kapitel 5 seiner Dissertation definiert wurde und eine Reihe von Einschränkungen für Anwendungen beschreibt, die mit dieser Architektur erstellt wurden. REST ist protokollunabhängig konzipiert, aber in Kapitel 6 derselben Dissertation wird beschrieben, wie REST über HTTP angewendet wird.
Sobald Ihre REST-Anwendung über dem HTTP-Protokoll erstellt wurde, sollten Sie die HTTP-Semantik kennen. Die Semantik des HTTP / 1.1-Protokolls ist derzeit im RFC 7231 beschrieben .
Die Antwortnutzlast einer
DELETE
Anforderung, die erfolgreich war, kann:Die folgenden Antwortstatuscodes eignen sich für eine erfolgreiche
DELETE
Anfrage:202
: Die Anforderung wurde zur Verarbeitung angenommen, die Verarbeitung wurde jedoch nicht abgeschlossen.204
: Der Server hat die Anforderung erfolgreich erfüllt und es ist kein zusätzlicher Inhalt im Antwortnutzdatenkörper zu senden.200
: Die Anforderung war erfolgreich und die Anforderungsnutzlast enthält eine Darstellung des Status der Aktion.Siehe das folgende Zitat aus dem RFC 7231 :
quelle
204 No Content
ist eine beliebte Antwort fürDELETE
und gelegentlichPUT
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.Dieser Artikel behandelt
POST
,PUT
,DELETE
undGET
. Hier ist die spezifische Diskussion überDELETE
:quelle
DELETE
und HATEOAS hängt wirklich davon ab, wie jemand HATEOAS implementieren möchte. Wenn bei der HATEOAS-Implementierung der Server Verbindungsbeziehungen zurückgibt, die in den Nachrichtentext eingebettet sind (z. B. HAL oder json-ld ), ist dies204 No content
möglicherweise nicht der koschere Statuscode. Wenn die HATEOAS-Implementierung jedoch die Server-Return-Link-Beziehungen in Antwort-Headern (dh Web-Linking ) enthält,204 No content
ist dies vollkommen koscher.