HTTP DELETE 端点应当返回哪些合适的响应状态码?
HTTP DELETE 端点响应状态码选择建议
场景1:待删除资源存在
200 OK是完全合规且最常用的选择,你可以在响应体中携带删除成功的说明、关联资源更新信息等自定义内容。- 如果删除任务是异步执行的(操作已经受理但还没完成最终删除),返回
202 Accepted。 - 如果不需要返回任何响应体内容,也可以用更轻量化的
204 No Content,这也是业界常用的实践。
场景2:待删除资源不存在
这个场景没有绝对的标准要求,两种主流方案都有广泛应用,按需选择即可:
方案1:返回404 Not Found
符合HTTP原生语义,明确告知调用方请求的目标资源不存在,方便调用方排查参数传错、资源已经被其他操作提前删除等问题,适合面向前端、开放平台调用的接口,便于问题定位。
方案2:返回200 OK/204 No Content
满足接口幂等性要求,多次调用DELETE接口的效果和单次调用一致,不会因为重复发起删除请求就报错。这种逻辑的前提是:删除操作的最终目标是让资源不存在,不管是本次删除的还是之前就没了,最终目标已经达成,所以直接返回成功即可,适合内部服务调用、对重试友好性要求高的场景。
小提示:不用纠结所谓的“绝对正确”,只要你在接口文档里把两种场景的返回规则写清楚,两种方案都是合理的。
内容的提问来源于stack exchange,提问作者madbird
相关产品推荐
相关产品推荐

