为了响应成功的HTTP DELETE请求,我应该返回410 Gone吗?
问题描述:
我对ReST API(基于ServiceStack构建)实现DELETE支持,并想知道在DELETE成功后返回什么响应代码。为了响应成功的HTTP DELETE请求,我应该返回410 Gone吗?
HTTP定义410:
请求的资源不再可用在服务器和没有转发地址是已知的。预计这种情况将被视为永久性的。具有链接编辑功能的客户应在用户批准后删除对Request-URI的引用。如果服务器不知道或无法确定该条件是否是永久性的,则应该使用状态码404(Not Found)(代替)。除非另有说明,否则此响应可缓存。
现在,如果资源刚刚DELETE
d,我可能就需要许多建议申请......但接受的做法似乎返回200 OK
在成功DELETE
- 特别是因为4XX
范围应该表示错误条件。
除了HTTP规范中的指导原则之外,任何引人注目的参数都是这样或那样的吗?
答
RFC 2616 Section 9.7特别指出关于用于DELETE
响应以下情况:
成功的响应应该是200(OK),如果 响应包括描述状态, 202(已接受),如果动作具有一个实体尚未执行 颁布,或204(无内容)如果已采取行动 颁布但响应不包含实体。
由于您的DELETE请求全是关于删除操作,所以您应该回复200,因为该操作已成功完成。如果有人稍后通过GET请求该资源,他的行动就是获取资源,然后应该用一些4xx,也许410或404简单地回答。 – ToBe