我有2个资源是Many-To-Many
有关。 一种资源是users
,另一种是roles
。 A user
可以指定不同的roles
,而role
可以指定不同的users
。如何通过REST调用将资源A映射到资源B?
/users
将返回所有用户/roles
将返回所有角色
的Many-To-Many
关系允许我使用下面的资源路径:
/users/1/roles
将返回分配给所有的角色id为1的用户1/roles/1/users
将ID返回分配给角色的所有用户现在1
比方说,我想用ID 2角色分配给用户ID为1
我有两个不同的想法:
PUT /users/1/roles/2 (No request body, as no use)
。这种方法非常可读,明显幂等。我也不期待回应。但似乎很奇怪,不要发送请求主体和PUT请求。POST /users/1/roles (Role object as request body)
这种方法在技术上似乎更正确。但是我想要映射一个已经存在的角色并不明显。我似乎更多的是为这个用户创建角色。将一个已经存在的角色附加到请求上似乎也是无用的。 ABadRequest
,因为我尝试添加一个不存在的角色,会很混乱。
双方似乎确实没有真正正确的,我...
这是如何在理解REST做符合呢?
这意味着,我需要做一个'GET /用户/ 1/roles'第一,所以我可以添加一个特定的角色列表再次输入'PUT/users/1/roles'。我不知道这件事。 –
是的。这是一般模式。 –
我也将拥有与'角色'和'权限'相同的星座。整个系统将有不同的服务来定义他们自己的权限。随着系统的发展,可能会发生一个角色可能拥有超过100个权限。如果我现在想要添加权限,这似乎是很多必要的数据传输。它似乎不是可销售的。 –