RESTful API更新组成员

问题描述 投票:0回答:1

我有两个资源:GroupItem。每个Item属于特定的Group并且有status领域。我希望能够在单个API调用中将Item中每个Group的状态更新为inactive。这是我想要的唯一状态改变 - 我不想将其改为active或类似的东西。

什么是RESTful方式这样做?我知道网址中的动词是皱眉,所以/api/groups/<group_id>/deactivate-items不会好。具有PATCH /api/groups/<group_id>/items有效载荷的status='inactive'是否适合REST?

rest http restful-url
1个回答
1
投票

什么是RESTful方式这样做?

想想你将如何使用网站。

您可能会获取一些描述该组的页面;在该页面的某个地方会有一些语义提示“要使该组的所有成员都处于非活动状态,请提交此表单。如果表单已提交,那么您的后端将负责执行实际工作,并且您将返回描述刚刚发生的事情的页面,以及其他有趣事情的链接。

因为浏览器理解HTTP和HTML,所以这一切都可以使用服务器碰巧提供的任何标识符来完成。服务器可以自由地改变表单的动作,因为浏览器只是执行HTML标准中描述的表单处理,并使用表单元数据描述的target-uri。

由于标识符可以是任何东西,因此您可以利用一个有趣的属性 - 成功时不安全的请求方法(包括PUT,POST,DELETE)invalidate本地缓存的资源。因此,一个有趣的可能性是将表单数据提交回/api/groups/<group_id>并使该页面的任何早期副本无效。

PATCH / api / groups //有效负载状态='无效'的项在REST中是否合适?

也许 - 这取决于/api/groups/<group_id>/items是什么。

要记住REST的一个关键点是您的资源模型不是您的域模型不是您的数据模型。资源支持我们要向客户端公开的协议。

从长远来看,请参阅Jim Webber's 2011 talk

© www.soinside.com 2019 - 2024. All rights reserved.