假设我将一些API设置为微服务。一个API是管理用户(用户API),如下所示:
/users GET, POST
/{id} GET, PUT, DELETE
然后还有另一个用于管理安全信息的API(访问角色,权限等),并且可以为用户API中创建的user
分配一个group
安全API。这种关联应该在安全微服务中还是在用户微服务中进行?
我最初的想法是在安全微服务中,因为这是所有应用程序将从中请求安全信息的地方。有了这个,并且user
只能分配给一个group
,我会得到一个端点:
/users/{id}/group GET, POST, DELETE
但是该端点感觉它更像是用户微服务。作为选项的其他端点是:
/groups/{id}/users GET, POST, DELETE
/{id} GET, DELETE
但是,这似乎可以将user
分配给多个组。但是,我可以设计它,以便当user
与group
相关联时,它会将其与先前与之关联的group
取消关联。
什么是最好的选择,还是有更好的方法来处理我不知道的这些类型的api调用?
答案 0 :(得分:0)
我猜没有'对'方式必然。以下是我将如何处理它。
基于:
然而,我可以设计它,以便当用户与a关联时 小组,它将它与以前的小组分开 与。相关联。
/groups/{id}/users GET, POST, DELETE
/{id} GET, DELETE
此端点会导致一些问题,Id
会发生变化,因此您必须更改用户切换到其他组后调用的URL。因此,连续呼叫需要转到新端点。
例如:/groups/1/users/1
可能有效,但当用户移动群组时/groups/1/users/1
将不再返回结果。它现在变为/groups/2/users/1
然而:
/users/{id}/group GET, POST, DELETE
如果用户切换组,端点不会发生变化,这使我认为它更清晰,更清晰。用户仍然是相同的,并且很清楚该组与该用户相关联,但是group
被引用并不重要,因为它将始终返回关联的{{1对于group
user
我想底线是端点应该反映出您要实现的目标,如果您要为用户获取该组:
id
或者如果您要获得某个组的所有用户:
/users/{id}/group GET, POST, DELETE