多个 API 上的相似端点
Similar Endpoints on multiple API's
假设我有几个 API 设置为微服务。一个API是管理用户(用户API),看起来像:
/users GET, POST
/{id} GET, PUT, DELETE
然后还有一个API用来管理安全信息(访问角色,权限等),在用户API中创建的一个user
可以赋值在安全 API 中定义的 group
。该关联应该在安全微服务中还是在用户微服务中进行?
我最初的想法是在安全微服务中,因为所有应用程序都会从那里请求安全信息。有了这个,一个 user
只能分配给一个 group
,然后我想出了端点:
/users/{id}/group GET, POST, DELETE
但是那个端点感觉它更属于用户微服务。其他可供选择的端点是:
/groups/{id}/users GET, POST, DELETE
/{id} GET, DELETE
但是这样一来似乎 user
可以分配给多个组。但是,我可以设计它,以便当 user
关联到 group
时,它将它与之前关联的 group
解除关联。
最好的选择是什么,或者是否有更好的方法来处理我不知道的这些类型的 api 调用?
我想没有 'right' 必然的方法。这是我的处理方式。
基于:
However, I could design it so that when a user is associated to a
group, it disassociates it from a group that it was previously
associated with.
/groups/{id}/users GET, POST, DELETE
/{id} GET, DELETE
此端点会导致一些问题,因为 Id
会发生变化,因此您必须更改在用户切换到其他组后调用的 url。所以连续的调用需要转到一个新的端点。
例如:/groups/1/users/1
可能是有效的一瞬间,但当用户移动组时/groups/1/users/1
将不再是return结果。它现在变成 /groups/2/users/1
鉴于:
/users/{id}/group GET, POST, DELETE
如果用户切换组,端点不会改变,在我看来这使它更清晰。用户仍然是相同的,很明显该组与该用户相关联,但是 group
被引用的内容并不重要,因为它总是 return 关联的 group
对于 user
和 id
我想最重要的是端点应该反映你想要实现的目标,如果你正在为用户获取组:
/users/{id}/group GET, POST, DELETE
或者如果您正在获取一个组的所有用户:
/groups/{id}/users GET, POST, DELETE
假设我有几个 API 设置为微服务。一个API是管理用户(用户API),看起来像:
/users GET, POST
/{id} GET, PUT, DELETE
然后还有一个API用来管理安全信息(访问角色,权限等),在用户API中创建的一个user
可以赋值在安全 API 中定义的 group
。该关联应该在安全微服务中还是在用户微服务中进行?
我最初的想法是在安全微服务中,因为所有应用程序都会从那里请求安全信息。有了这个,一个 user
只能分配给一个 group
,然后我想出了端点:
/users/{id}/group GET, POST, DELETE
但是那个端点感觉它更属于用户微服务。其他可供选择的端点是:
/groups/{id}/users GET, POST, DELETE
/{id} GET, DELETE
但是这样一来似乎 user
可以分配给多个组。但是,我可以设计它,以便当 user
关联到 group
时,它将它与之前关联的 group
解除关联。
最好的选择是什么,或者是否有更好的方法来处理我不知道的这些类型的 api 调用?
我想没有 'right' 必然的方法。这是我的处理方式。
基于:
However, I could design it so that when a user is associated to a group, it disassociates it from a group that it was previously associated with.
/groups/{id}/users GET, POST, DELETE
/{id} GET, DELETE
此端点会导致一些问题,因为 Id
会发生变化,因此您必须更改在用户切换到其他组后调用的 url。所以连续的调用需要转到一个新的端点。
例如:/groups/1/users/1
可能是有效的一瞬间,但当用户移动组时/groups/1/users/1
将不再是return结果。它现在变成 /groups/2/users/1
鉴于:
/users/{id}/group GET, POST, DELETE
如果用户切换组,端点不会改变,在我看来这使它更清晰。用户仍然是相同的,很明显该组与该用户相关联,但是 group
被引用的内容并不重要,因为它总是 return 关联的 group
对于 user
和 id
我想最重要的是端点应该反映你想要实现的目标,如果你正在为用户获取组:
/users/{id}/group GET, POST, DELETE
或者如果您正在获取一个组的所有用户:
/groups/{id}/users GET, POST, DELETE