RESTful API更新组的成员

时间:2019-04-06 20:23:57

标签: rest http restful-url

我有两个资源:GroupItem。每个Item都属于一个特定的Group,并具有一个status字段。我希望能够在单个API调用中将Item中每个Group的状态更新为inactive。这是我唯一想要的状态更改-我不想将其更改为active或类似的名称。

执行此操作的RESTful方法是什么?我知道网址中的动词会被皱眉,所以/api/groups/<group_id>/deactivate-items不好。负载为PATCH /api/groups/<group_id>/items的{​​{1}}在REST中是否合适?

1 个答案:

答案 0 :(得分:1)

  

执行此操作的RESTful方法是什么?

考虑如何使用网站。

您可能会获取一些描述该组的页面;该页面上某处的语义提示是“使该组的所有成员都处于非活动状态,请提交此表单。如果已提交该表单,则您的后端将负责完成实际工作,然后您将发送回去。一个页面,描述了刚刚发生的事情,并提供了其他有趣的事情的链接。

由于浏览器可以理解HTTP和HTML,因此可以使用服务器碰巧提供的任何标识符来完成所有这些操作。服务器可以自由更改表单的操作,因为浏览器仅执行HTML标准中描述的表单处理,并使用表单元数据描述的target-uri。

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

  

在REST中,PATCH / api / groups //具有有效负载为“无效”的项目是否合适?

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

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

有关其详细形式,请参见Jim Webber's 2011 talk