我有一个端点/groups
我可以通过将一些信息发布到/groups
/groups/{id}
我可以通过POST到/group/{id}
但是,我有不同的字段需要由具有不同权限的用户更新,例如:组可能具有结构
{
"id": 1,
"name": "some name",
"members": [
{
"user_id": 456,
"known_as": "Name 1",
"user": { /* some user object */},
"status": "accepted",
"role": "admin",
"shared": "something"
},
{
"user_id": 999227,
"known_as": "Name 1",
"user": { /* some user object */},
"status": "accepted",
"role": "basic",
"shared": "something"
},
{
"user_id": 9883,
"known_as": "Name 1",
"user": { /* some user object */},
"status": "requested",
"role": "basic",
"shared": "something"
}
],
"link": "https://some-link"
}
作为示例,我对/group/{id}/members/{id}
端点有以下3个操作:
known_as
字段role
和status
字段。shared
字段我的选择是:
/group/{id}/members/{id}
来完成,如果他们尝试更新不允许更新的字段,则会抛出未经授权的错误?< / LI>
/group/{id}/members/{id}/role
,/group/{id}/members/{id}/shared
和/group/{id}/members/{id}/status
?这个问题是我不想要更新所有字段的请求(我想最终会有很多字段)。所以只是为了澄清我的问题是:我的选项1 是否被认为是正确的REST我可以将更新发布到端点,如果您尝试更改某个字段,则可能会失败允许吗?
答案 0 :(得分:1)
在我看来,选项1比选项2好得多。
如你所说,选项2是浪费带宽。
更重要的是,使用选项1,您可以轻松实现原子更新(更新“全有或全无”)。它应该成功完成或完全失败。永远不应该有部分更新。
使用选项2,很可能实现更新以成功完成某个请求并拒绝另一个请求,即使这两个请求被视为单个操作。