繁体   English   中英

多个API上的类似端点

[英]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可能有效,但当用户移动gr​​oups /groups/1/users/1将不再返回结果。 它现在将成为/groups/2/users/1

鉴于:

/users/{id}/group      GET, POST, DELETE

如果用户切换组,端点将不会改变,这使我认为它更清晰,更清晰。 用户仍然是相同的,并且很明显该组与该用户相关联,但是引用哪个group并不重要,因为它将始终返回具有该iduser的关联group

我想最重要的是,如果要为用户获取组,端点应该反映您要实现的目标:

/users/{id}/group      GET, POST, DELETE

或者如果您获得了一个组的所有用户:

/groups/{id}/users     GET, POST, DELETE

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM