使用 Http DELETE 谓词来定义删除单个特定对象的 REST API 是否好?



我正在实现一些 REST API,我想知道我应该使用什么 HTTP 动词来实现从数据库中删除单个记录的 API

我认为我应该使用DELETE方法,但在这里阅读: http://www.restapitutorial.com/lessons/httpmethods.html

阅读DELETE动词定义我可以读到:

405(方法不允许),除非您要删除整个 收集 - 通常不是可取的。

所以在我看来,当我删除整个集合而不是单个元素时,我必须使用DELETE。或者它也适合我删除特定对象的用例(将此对象的 ID 传递到我的 URL 中)?

看起来您误解了您发布的链接的内容。

DELETEHTTP 方法可用于删除单个资源或资源集合

但是,在大多数情况下,你不希望允许客户端删除整个集合,因此返回一个405状态代码,指示集合 URL 中不允许使用DELETE方法。


更实际地说,假设您有一个映射到/customers的客户集合。

对此类 URL 的GET请求将返回此集合的表示形式。对此类 URL 的DELETE请求将从应用程序中删除所有客户。您很可能不希望这样做,因此您返回405以指示不允许一次删除所有客户。另一方面,您希望允许客户端通过对定位单个客户的 URL 执行DELETE请求来删除单个客户,例如/customers/{id}

如果请求成功,请考虑 RFC 7231 中定义的以下状态代码之一:

如果成功应用DELETE方法,则源服务器应 发送202(已接受)状态代码(如果操作可能成功) 但尚未颁布204,如果 已采取行动,不再提供进一步的资料, 或200(正常)状态代码(如果操作已颁布且 响应消息包括描述状态的表示形式。

相关内容

  • 没有找到相关文章

最新更新