Czy treść odpowiedzi jest dozwolona dla żądania HTTP-DELETE?

82

Zakładam, że kod odpowiedzi 200 zawsze dopuszcza treść odpowiedzi, ale nie mogę znaleźć żadnej wyraźnej wzmianki o treściach odpowiedzi dla żądań DELETE.

scrrr
źródło

Odpowiedzi:

139

Jest to wyraźnie wymienione w dokumencie RFC

Krótka odpowiedź brzmi:

Państwo powinno zawierać korpus odpowiedzi z jednostki opisującej element usunięty / zasobu jeśli wrócisz 200 .

202 jest czymś w rodzaju asynchronicznego statusu zwrotu żądania / odpowiedzi.

204 mówi wyraźnie, że nie dołączasz treści odpowiedzi

fyr
źródło
2
Głosuj za odwołaniem się do specyfikacji HTTP. Należy również pamiętać, że aktualizują specyfikację HTTP i wyjaśniają wiele problemów tutaj tools.ietf.org/wg/httpbis
Darrel Miller.
9
+1 Ale specyfikacja mówi, że możesz zwrócić 200 ok, jeśli treść odpowiedzi zawiera jednostkę „opisującą stan”, a nie jednostkę usuniętą.
naikus
1
To faktycznie mówi „obejmuje podmiot opisujące ten stan” - tak powrocie usuniętego podmiot posiadający „skasowany” flaga wydaje się całkowicie prawidłowy.
Ryan Wheale,
Czy odpowiedź 202 (zaakceptowana) musi zawierać treść?
Soullivaneuh
15

Tak, zazwyczaj powinieneś odpowiedzieć kodem odpowiedzi 200 zgodnie ze specyfikacją W3C :

9.7 USUŃ

Metoda DELETE żąda, aby serwer pochodzenia usunął zasób zidentyfikowany przez identyfikator URI żądania. Ta metoda MOŻE zostać zastąpiona przez interwencję człowieka (lub w inny sposób) na serwerze pochodzenia. Klient nie może zagwarantować, że operacja została wykonana, nawet jeśli kod stanu zwrócony z serwera pochodzenia wskazuje, że akcja została zakończona pomyślnie. Jednak serwer NIE POWINIEN wskazywać sukcesu, chyba że w momencie udzielenia odpowiedzi zamierza usunąć zasób lub przenieść go w niedostępne miejsce.

Pomyślna odpowiedź POWINNA być 200 (OK), jeśli odpowiedź zawiera jednostkę opisującą status, 202 (Zaakceptowano), jeśli czynność nie została jeszcze uchwalona, ​​lub 204 (Brak treści), jeśli czynność została uchwalona, ​​ale odpowiedź nie zawiera jednostka.

Jeśli żądanie przechodzi przez pamięć podręczną, a identyfikator URI żądania identyfikuje co najmniej jedną jednostkę obecnie buforowaną, te wpisy POWINNY być traktowane jako nieaktualne. Odpowiedzi na tę metodę nie podlegają buforowaniu.

Brian Scott
źródło
2
Źle przeczytałeś język. Kody są wymienione w kolejności rosnącej, a kolejność nie oznacza preferowanej odpowiedzi. Każda odpowiedź 200, 202 lub 204 jest równie akceptowalna, jak opisano w tym tekście. POWINIEN oznacza tylko, że kody są zaimplementowane w zwykłych konwencjach (np. 200 zawiera treść, a 204 nie).
George Shaw