我不认为我的设置有任何独特之处,但我似乎无法找到有关该主题的更多信息。我有一个User
实体。用户可以拥有多个Roles
。角色是系统中的预定义实体,客户端无法创建新角色。但是,客户可以在Roles
中添加或删除User
。关于如何实现Role
到User
的链接,我有一些想法,但我不确定哪个是最佳选择。
GET /users/1/roles
返回如下集合:
[
{
"id":1,
"name": "ACTIVE_USER"
},
{
"id":2,
"name": "ADMIN"
}
]
以下是我到目前为止所考虑的选项
POST /users/1/roles
{
"roleId":1
}
POST /users/1/roles/1
POST /user-roles
{
"userId":1,
"roleId":1
}
GET /roles
相同 POST /user/1/roles
{
"id":1
}
答案 0 :(得分:1)
角色是系统中的预定义实体,客户端无法创建新角色
我会建议您不要选择任何选项,因为他们都会发出POST请求。
请记住,角色是预定义的,您没有创建新角色,因此POST请求不合适。
相反,由于每个用户都有一个角色列表(可能是也可能不是空列表),我只需要执行一个PATCH请求来更新具有新角色的角色列表。记住PUT是创建/替换,PATCH是"更新"
可能的情况是您可以添加和删除用户的角色。因此,我建议您在请求正文中添加一个操作参数:
PATCH /users/1
[
{"action": "add", "path": "/roles", "roleId": 1}
]
向用户添加角色。要删除您,请自然将add
替换为remove
。
如果您对{"action": "add", "path": "/roles", "roleId": 1}
的使用来自