请教一个 RESTful API 的设计问题

2017-10-23 11:30:00 +08:00
 airycanon

有如下两个表

想要设计一个 API 把用户批量加入某个组,请问下面哪个 API 更好一些,或者有更好的方案?先谢过各位。

2026 次点击
所在节点    API
9 条回复
Sanko
2017-10-23 11:33:08 +08:00
直觉第一个吧
whypool
2017-10-23 11:38:09 +08:00
第一种;
不过一般会把动作提到前面:post /groups/add-users/{id}
pubby
2017-10-23 11:41:34 +08:00
为啥不是 POST /groups/<gid>/users
airycanon
2017-10-23 11:42:41 +08:00
@pubby 这不就是第二种么……
pubby
2017-10-23 11:45:41 +08:00
url 应该是资源,不是动作
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}]
airycanon
2017-10-23 11:49:06 +08:00
@pubby @mcfog 两位说的意思我明白了,多谢指点。
mec
2017-10-23 11:51:28 +08:00
楼上正解,restful uri 里面是资源,不能有动词
动词用 http 里面的 method 区分,如果想丰富动作,可以添加参数 method 来区分
TuringGunner
2017-10-23 11:57:03 +08:00
你这两个都不对

要么重新重新抽象出来一个新的资源,就像楼上那样

或者写一个 users controller,处理 users 这个资源,看你这个应该是在 users 里增加 group_id 吧

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/399869

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX