Ist ein Antworttext für eine HTTP-DELETE-Anfrage zulässig?

80

Ich gehe davon aus, dass der Antwortcode 200 immer einen Antworttext zulässt, aber ich kann keine explizite Erwähnung von Antwortkörpern für DELETE-Anforderungen finden.

scrrr
quelle

Antworten:

137

Es wird hier im RFC ausdrücklich erwähnt

Die kurze Antwort lautet:

Sie sollten einen Antworttext mit einer Entität einfügen, die das gelöschte Element / die gelöschte Ressource beschreibt, wenn Sie 200 zurückgeben .

202 ist so etwas wie ein asynchroner Anforderungs- / Antwortrückgabestatus.

204 besagt ausdrücklich, dass Sie keinen Antworttext einschließen

fyr
quelle
2
Upvote für die Referenzierung der HTTP-Spezifikation. Beachten
Darrel Miller
9
+1 Die Spezifikation besagt jedoch, dass Sie 200 ok zurückgeben können, wenn der Antworttext eine Entität enthält, die den Status beschreibt, und nicht die Entität, die gelöscht wurde.
Naikus
1
Es heißt tatsächlich "enthält eine Entität, die den Status beschreibt" - daher scheint die Rückgabe der gelöschten Entität mit einem "gelöschten" Flag völlig gültig zu sein.
Ryan Wheale
Muss 202 (Akzeptierte) Antwort Körper enthalten sein?
Soullivaneuh
15

Ja, Sie sollten normalerweise mit einem 200-Antwortcode gemäß der W3C-Spezifikation antworten :

9.7 LÖSCHEN

Die DELETE-Methode fordert den Ursprungsserver auf, die durch den Request-URI identifizierte Ressource zu löschen. Diese Methode kann durch menschliches Eingreifen (oder auf andere Weise) auf dem Ursprungsserver überschrieben werden. Dem Client kann nicht garantiert werden, dass der Vorgang ausgeführt wurde, selbst wenn der vom Ursprungsserver zurückgegebene Statuscode anzeigt, dass die Aktion erfolgreich abgeschlossen wurde. Der Server sollte jedoch KEINEN Erfolg anzeigen, es sei denn, er beabsichtigt zum Zeitpunkt der Antwort, die Ressource zu löschen oder an einen unzugänglichen Ort zu verschieben.

Eine erfolgreiche Antwort sollte 200 (OK) sein, wenn die Antwort eine Entität enthält, die den Status beschreibt, 202 (Akzeptiert), wenn die Aktion noch nicht ausgeführt wurde, oder 204 (Kein Inhalt), wenn die Aktion ausgeführt wurde, die Antwort jedoch nicht enthält eine Entität.

Wenn die Anforderung einen Cache durchläuft und der Anforderungs-URI eine oder mehrere aktuell zwischengespeicherte Entitäten identifiziert, MÜSSEN diese Einträge als veraltet behandelt werden. Antworten auf diese Methode können nicht zwischengespeichert werden.

Brian Scott
quelle
10
Es ist nicht "die W3C-Spezifikation".
Julian Reschke
2
Sie haben die Sprache falsch gelesen. Die Codes sind in aufsteigender Reihenfolge aufgeführt und die Reihenfolge impliziert keine bevorzugte Antwort. Jede Antwort von 200, 202 oder 204 ist gleichermaßen akzeptabel, wie in diesem Text beschrieben. Das SOLLTE nur bedeuten, dass die Codes mit den üblichen Konventionen implementiert werden (z. B. 200 enthält einen Körper und 204 nicht).
George Shaw