[英]Similar Endpoints on multiple API's
假设我将一些API设置为微服务。 一个API是管理用户(用户API),看起来像:
/users GET, POST
/{id} GET, PUT, DELETE
再有就是用于管理安全信息(访问角色,权限等)另一API,和一个user
的用户API中创建可以被分配一个group
是安全API中定义。 这种关联应该在安全微服务中还是在用户微服务中进行?
我最初的想法是安全微服务,因为这是所有应用程序将从中请求安全信息的地方。 有了这个,并且user
只能被分配到一个group
,然后我想出了以下端点:
/users/{id}/group GET, POST, DELETE
但该端点感觉它更像是用户微服务。 可选的其他端点是:
/groups/{id}/users GET, POST, DELETE
/{id} GET, DELETE
但那使得user
可以被分配到多个组。 但是,我可以设计它,以便当user
与某个group
关联时,它会将其与之前关联的group
取消关联。
什么是最好的选择,还是有更好的方法来处理我不知道的这些类型的api调用?
我想有必要没有'正确'的方式。 这是我如何处理它。
基于 :
但是,我可以设计它,以便当用户与某个组关联时,它会将其与之前关联的组取消关联。
/groups/{id}/users GET, POST, DELETE
/{id} GET, DELETE
此端点会导致一些问题,即Id
会发生变化,因此您必须在用户切换到其他组后更改您调用的URL。 因此,连续呼叫需要转到新端点。
例如: /groups/1/users/1
可能有效,但当用户移动groups /groups/1/users/1
将不再返回结果。 它现在将成为/groups/2/users/1
鉴于:
/users/{id}/group GET, POST, DELETE
如果用户切换组,端点将不会改变,这使我认为它更清晰,更清晰。 用户仍然是相同的,并且很明显该组与该用户相关联,但是引用哪个group
并不重要,因为它将始终返回具有该id
的user
的关联group
。
我想最重要的是,如果要为用户获取组,端点应该反映您要实现的目标:
/users/{id}/group GET, POST, DELETE
或者如果您获得了一个组的所有用户:
/groups/{id}/users GET, POST, DELETE
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.