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

使用Http DELETE谓词定义删除单个特定对象的REST API好吗?,rest,web-services,http,restful-architecture,httpverbs,Rest,Web Services,Http,Restful Architecture,Httpverbs,我正在实现一些restapi,我怀疑应该使用什么HTTP动词来实现从数据库中删除单个记录的API 我想我应该使用删除方法,但在这里阅读: 阅读删除动词定义我可以阅读: 405(不允许使用方法),除非要删除整个 收藏通常不可取 因此,在我看来,当我删除整个集合而不是单个元素时,我必须使用DELETE。或者它也适用于我删除特定对象(将此对象的ID传递到我的URL)的用例。看起来您误解了您发布的链接的内容 HTTP方法可用于删除单个资源或资源集合 但是,在大多数情况下,您不希望允许客户端删除整个集合

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

我想我应该使用删除方法,但在这里阅读:

阅读删除动词定义我可以阅读:

405(不允许使用方法),除非要删除整个 收藏通常不可取


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

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

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

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


从更实用的角度考虑,您有一个映射到<代码> /客户> /代码>的客户集合。p> 对此类URL的

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

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

如果成功应用了
DELETE
方法,则源服务器应 如果操作可能成功,则发送
202
(已接受)状态代码 但尚未颁布,如果 已采取行动,无需提供进一步信息, 或
200
(确定)状态代码(如果行动已实施且 响应消息包括描述状态的表示