【发布时间】:2014-04-25 07:23:23
【问题描述】:
我正在创建一个基于 REST 概念的 API,但在谈论相关资源时我仍然有点困惑。
我有一个网站,人们可以在其中注册多个组并选择多个角色。例如,让我们以在公司注册的人作为场景:
公司
- 脸书
- 谷歌
- 苹果
角色
- 营销
- 销售
- 发展
- 客户支持
所以,当我想在一家新公司中创建一个具有特定角色的用户时,我会将类似这样的内容传递给 /users 端点的 POST 请求
{
"username" : "raffaele.izzia",
"email" : "example@email.com",
"groups" : [{
"id" : 1,
"roles" : ["Sales","Customer support"]
},
{
"id" : 2,
"roles" : ["Sales","Marketing"]
}]
}
通过这种方法,一旦我从 API 中获得一些用户,我总是知道他们属于哪些组/角色。
但是 /groups 端点上的请求呢?
如果我 GET /groups/google 我也应该收到有关用户/角色的信息。所以可能是这样的
{
groups: [{
"id" : 2,
"name" : "Google",
"users" : [2,3,4,10,35,50] //role will be included in the single resource once you expand this collection
}]
}
或者这个:
{
groups: [{
"id" : 2,
"name" : "Google",
"roles" : [{
"name" : "Sales"
"users" : [2,3,4,10]
},{
"name" : "Marketing"
"users" : [4,10,8,57]
}]
}]
}
您认为这种关系的最佳解决方案是什么?
【问题讨论】:
标签: api rest relationship api-design