我正在尝试找出通过 REST API 将多个用户添加到组的最佳方式。
现在,我认为这是一次添加一个用户的最佳方式:
PUT /groups/123/{userID}
然后,从组中删除用户:
DELETE /groups/123/{userID}
但是我如何将多个用户同时添加到组中?这是最好的方法吗?
PUT /groups/123
作为数组的内容主体:
[
"user1",
"user2",
"user3"
]
...并且要从群组中删除用户,我会通过 DELETE
请求执行相同的操作。
这种设置有什么“错误”吗,或者有没有更好、更“行业标准”的方式来做到这一点?
答案 0 :(得分:0)
如何通过 REST API 放置多个资源
你不这样做 - HTTP 中的每个请求都有一个且恰好一个目标 resource; PUT 请求的语义是请求的消息体是资源的替代表示。
资源是文档的概括。
拥有一份代表某个组成员的文档是完全合理的。
PUT /groups/123
[
"user1",
"user2",
"user3"
]
这个请求意味着是“用这个副本替换你的/groups/123副本”。它纯粹是一个文档编辑命令。
有用的工作 - 就像实际更改主组成员列表一样,是一个副作用,使您的文档副本看起来像提供的副本。见Webber 2011。
在这种风格中,从组中“删除”一个用户看起来就像是对 /groups/123 文档的另一次编辑
PUT /groups/123
[
"user1",
"user3"
]
当然,远程创作语义不是必需的;你可以这样做:
POST /groups/123
Please remove user1
或
POST /groups/123
action=addUser&id=user4
要从组中删除用户,我会通过 DELETE 请求执行相同的操作
小心 - DELETE(如 PUT)表示 HTTP 中的特定内容,这可能不是您的意思。
<块引用>允许使用 DELETE 方法的资源相对较少
DELETE 的语义完全属于 transfer documents over a network 域,而不属于“管理用户和组”域。