我正在实现一些 REST API,我想知道我应该使用什么 HTTP 动词来实现从数据库中删除单个记录的 API
我认为我应该使用DELETE方法,但在这里阅读: http://www.restapitutorial.com/lessons/httpmethods.html
阅读DELETE动词定义我可以读到:
405(方法不允许),除非您要删除整个 收集 - 通常不是可取的。
所以在我看来,当我删除整个集合而不是单个元素时,我必须使用DELETE。或者它也适合我删除特定对象的用例(将此对象的 ID 传递到我的 URL 中)?
看起来您误解了您发布的链接的内容。
DELETE
HTTP 方法可用于删除单个资源或资源集合。
但是,在大多数情况下,你不希望允许客户端删除整个集合,因此返回一个405
状态代码,指示集合 URL 中不允许使用DELETE
方法。
更实际地说,假设您有一个映射到/customers
的客户集合。
对此类 URL 的GET
请求将返回此集合的表示形式。对此类 URL 的DELETE
请求将从应用程序中删除所有客户。您很可能不希望这样做,因此您返回405
以指示不允许一次删除所有客户。另一方面,您希望允许客户端通过对定位单个客户的 URL 执行DELETE
请求来删除单个客户,例如/customers/{id}
。
如果请求成功,请考虑 RFC 7231 中定义的以下状态代码之一:
如果成功应用
DELETE
方法,则源服务器应 发送202
(已接受)状态代码(如果操作可能成功) 但尚未颁布204
,如果 已采取行动,不再提供进一步的资料, 或200
(正常)状态代码(如果操作已颁布且 响应消息包括描述状态的表示形式。