是否允许响应主体进行HTTP-DELETE请求?


80

我假定响应代码200始终允许有一个响应主体,但是我找不到任何针对DELETE请求的响应主体的明确提及。

Answers:


137

RFC中明确提及

简短的答案是:

应该包括一个响应体与描述删除项/资源如果返回实体200

202类似于异步请求/响应返回状态。

204明确表示您不包括响应主体


2
支持引用HTTP规范。另请注意,他们正在更新HTTP规范并在此处澄清许多问题tools.ietf.org/wg/httpbis
Darrel Miller

9
+1但规范说如果响应正文包含“描述状态”的实体而不是删除的实体,则可以返回200 ok。
naikus 2012年

1
它实际上是说,“包括描述一个实体状态” -所以回来了“已删除”标志似乎完全有效的被删除的实体。
瑞安·惠勒

正文中是否必须包含202(接受)响应?
Soullivaneuh's

15

是的,按照W3C规范,您通常应该使用200响应代码进行响应:

9.7删除

DELETE方法请求原始服务器删除由Request-URI标识的资源。在原始服务器上,人为干预(或其他方式)可能会覆盖此方法。即使从原始服务器返回的状态代码指示该操作已成功完成,也不能保证客户机已经执行了该操作。但是,服务器不应指示成功,除非在给出响应时服务器打算删除资源或将其移动到无法访问的位置。

如果响应中包含描述状态的实体,则成功响应应该为200(确定);如果尚未执行该操作,则为202(接受);如果已经执行该动作但响应不包括该响应,则返回204(无内容)。一个实体。

如果请求通过缓存,并且Request-URI标识一个或多个当前缓存的实体,则应将这些条目视为过期。此方法的响应不可缓存。


10
不是“ W3C规范”。
朱利安·雷施克

2
您误读了该语言。这些代码以升序列出,并且该顺序并不表示首选响应。如本文中所述,200、202或204响应中的每一个都可以接受。应该仅表示代码以通常的约定实现(例如200包含主体,而204不包含主体)。
邵逸夫
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.