有如下两个表
用户 users ( id,group_id,...)
组 groups ( id,...)
想要设计一个 API 把用户批量加入某个组,请问下面哪个 API 更好一些,或者有更好的方案?先谢过各位。
POST /users/add-to-group/{组 id}
提交用户 id 数组
POST /groups/{组 id}/add-users
提交用户 id 数组
1
Sanko 2017-10-23 11:33:08 +08:00 via Android
直觉第一个吧
|
2
whypool 2017-10-23 11:38:09 +08:00
第一种;
不过一般会把动作提到前面:post /groups/add-users/{id} |
3
pubby 2017-10-23 11:41:34 +08:00
为啥不是 POST /groups/<gid>/users
|
5
pubby 2017-10-23 11:45:41 +08:00 via Android
url 应该是资源,不是动作
|
6
mcfog 2017-10-23 11:46:15 +08:00
这两个都是典型的 restful 反模式(动作写在 URL 里用 POST )
user 和 group 的关系如果作为 group 资源的属性的话 PATCH /group/<group_id>/users [...user_ids] 或者(便于扩展批量删除等其他语义) {type: join, users: [...user_ids]} 也可以把关系当作独立的资源 POST /user-group-relation [...{user_id, group_id}] |
8
mec 2017-10-23 11:51:28 +08:00
楼上正解,restful uri 里面是资源,不能有动词
动词用 http 里面的 method 区分,如果想丰富动作,可以添加参数 method 来区分 |
9
TuringGunner 2017-10-23 11:57:03 +08:00
你这两个都不对
要么重新重新抽象出来一个新的资源,就像楼上那样 或者写一个 users controller,处理 users 这个资源,看你这个应该是在 users 里增加 group_id 吧 |