有如下两个表
用户 users ( id,group_id,...)
组 groups ( id,...)
想要设计一个 API 把用户批量加入某个组,请问下面哪个 API 更好一些,或者有更好的方案?先谢过各位。
POST /users/add-to-group/{组 id}
提交用户 id 数组
POST /groups/{组 id}/addusers
提交用户 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 吧 |