【问题标题】:Correct resource naming正确的资源命名
【发布时间】:2021-11-20 01:22:13
【问题描述】:

我有一个包含一些微服务、用户、投注、游戏的 API……

大多数端点都遵循这种模式:

server:8080/users
server:8080/users/{id}
server:8080/users?name=[]

它们被映射到负载均衡器中,因此当请求带有路径 /users 的 url 时,它会转到用户服务。

我需要为用户和投注服务添加统计信息。这样做: server:8080/users/stats,完全错误。我认为我应该将统计数据本身视为一种资源,但在这种情况下,我应该开始在负载均衡器中添加很多规则,例如:

如果传入的url是:

server:8080/stats?type=users

我觉得根据查询参数从负载均衡器路由是不正确的。我对此有完全错误的方法吗?任何有关这方面的指导都会非常有帮助。

【问题讨论】:

  • 任何你想使用的拼写都可以。您可能需要确定约束的优先级,并选择满足最重要约束的拼写。

标签: rest microservices


【解决方案1】:

在微服务的上下文中: 选项1: 创建一个新的 stats 微服务,如果你觉得与用户没有直接关系,分离关注点是有意义的。 选项 2: users.api.yourcompany.com/-> 用户服务 stats.api.yourcompany.com/-> 用户服务

【讨论】:

  • 但是每个服务都有自己的数据库,用户和投注。新服务访问多个数据库是否正确?此外,为新资源创建新服务听起来很多,只有两个端点和几个查询。
  • 那么如果逻辑依赖于该数据库中的用户数据,那么统计数据位于 /users 下听起来是正确的
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2019-07-01
  • 1970-01-01
  • 2014-12-03
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2014-05-05
相关资源
最近更新 更多