小编典典

第二次使用 HTTP DELETE 删除资源时的状态码

all

鉴于 HTTP 中的 DELETE 动词是幂等的,当我发出以下请求时,我第二次(或第三次,或第四次等)会发生什么?

DELETE /person/123

第一次,资源被删除,我返回204(成功,无内容)。我应该在后续调用中返回 204 还是返回 404(未找到)?


阅读 111

收藏
2022-08-03

共1个答案

小编典典

由于无状态系统中的 HTTP 请求应该是独立的,因此一个请求的结果不应依赖于前一个请求。考虑如果两个用户同时对同一资源执行 DELETE
会发生什么。第二个请求获得 404 是有意义的。如果一个用户发出两个请求,情况也是如此。

我猜让 DELETE
返回两个不同的响应对您来说并不具有幂等性。我发现将幂等请求视为使系统处于相同状态是很有用的,不一定具有相同的响应。因此,无论您是删除现有资源,还是尝试删除不存在的资源,服务器资源状态都是相同的。

2022-08-03