我不认为我的设置在任何方面都是独一无二的,但我似乎找不到很多关于这个主题的信息。我有一个User实体。用户可以拥有许多Roles。角色是系统中预定义的实体,客户端不能创建新角色。但是,客户端可以从Roles中添加或删除User。对于如何实现将Role与User连接起来,我有一些想法,但我不确定哪一个是最好的选择。
GET /users/1/roles返回的集合如下:
[
{
"id":1,
"name": "ACTIVE_USER"
},
{
"id":2,
"name": "ADMIN"
}
]以下是我已经考虑过的选择
1.体内roleId
POST /users/1/roles
{
"roleId":1
}2. url中的角色id
POST /users/1/roles/1
3.独立的用户角色端点
POST /user-roles
{
"userId":1,
"roleId":1
}4.与GET /roles返回的格式相同
POST /user/1/roles
{
"id":1
}发布于 2015-09-07 21:31:43
角色是系统中预定义的实体,客户端不能创建新角色。
我建议你不要有任何选择,因为他们都是要求邮寄的。
请记住,角色是预先定义的,您不是在创建新角色,因此POST请求可能不合适。
相反,由于每个用户都有一个角色列表(可能是空列表,也可能不是空列表),所以我只需要执行一个修补程序请求,用一个新角色来更新该角色列表。记住PUT是创建/替换,补丁是“更新”
可能的情况是,您可以从用户中添加和删除角色。因此,我建议您向请求体添加一个操作参数:
PATCH /users/1
[
{"action": "add", "path": "/roles", "roleId": 1}
]若要向用户添加角色,请执行以下操作。为了删除,您可以自然地将add替换为remove。
如果您想知道{"action": "add", "path": "/roles", "roleId": 1}的用法来自何处,请参阅{"action": "add", "path": "/roles", "roleId": 1}
https://stackoverflow.com/questions/32446128
复制相似问题