REST API 中 DELETE 请求的响应状态码
在 REST API 的设计中,DELETE
方法用来删除资源。比如,发送 DELETE
请求到 /user/123
可以删除 ID 为 123
的 user
资源。DELETE
请求的响应状态码一般为 204 No Content
,表示没有响应内容。
一个常见的疑问是,如果要删除的资源不存在,响应状态码应该是 204
还是 404
?使用 204
的动机可能是确保 DELETE
请求的幂等性。当第一个 DELETE
请求删除某个资源之后,再次发送同样的 DELETE
请求会得到同样的 204
状态码。
实际上,请求的幂等性并不包含响应状态码。使用不同的状态码并不会改变请求的幂等性。使用 404
可以更好的描述删除请求的结果。
在实际开发中,对于 DELETE
请求响应状态码并没有足够的共识。有时候 200
也会被用来作为 DELETE
请求的响应状态码。每个开发团队也可能有自己内部的规范。
总得来说,推荐的做法是:
- 如果
DELETE
请求成功删除指定资源,返回204
。 - 如果找不到指定资源,返回
404
。