【发布时间】:2018-03-20 21:32:29
【问题描述】:
我正在处理一个项目,其客户端使用 REST/HATEOAS 来获取和修改数据。
这是类图的一部分:class diagram。
请求 /group/12345 的 hal+json HATEOAS 响应如下所示:
{
"id": "12345",
"_links": {
"self": {
"href": "/group/12345"
},
"roles": {
"href": "/group/12345/roles"
}
}
}
要从该组中删除一个角色,我可以简单地对特定角色执行 DELETE。 (因为每个角色都必须在一个组中,并且不允许将角色移动到另一个组)。
所以我会在角色中添加一个带有 rel“drop”的链接。因此,客户端知道如果或者更确切地说何时允许删除请求:
{
"id": "67890",
"_links": {
"self": {
"href": "/roles/67890"
},
"users": {
"href": "/roles/67890/users"
},
"drop": {
"href": "/roles/67890"
}
}
}
因此,要删除用户,客户端会查找放置链接。如果没有找到链接,则不允许删除。否则,它会在找到的链接上执行 DELETE 请求。
但是,如果我想从角色中删除用户,我应该怎么做?
我不能简单地删除用户。角色 -> 用户关系不是聚合。
我如何告诉客户端是否允许从角色中删除用户?
要从角色中删除用户,我将使用 DELETE /groups/12345/roles/67890/users/ABC。为了删除我将使用 DELETE /users/ABC 的用户。
那么我应该把“从角色中删除用户”链接放在哪里?
提前谢谢你:)
【问题讨论】: