在将整体分割为微服务时如何定义API网关URL

时间:2018-06-04 10:20:36

标签: microservices netflix-zuul api-gateway

我们正在将整体应用程序拆分为微服务。这将是一个渐进的过程,这意味着最初我们将从2个微服务开始,稍后我们将它们分成更多等等。

monoligh公开了一个REST API,它提供了管理数十个不同实体的方法(例如用户,user_types,角色,role_types等)。整体上只有一个REST API的消费者 - 一个Javascript前端应用程序。

我们目前正在研究如何配置API网关(Zuul)的两种可能性:

  1. 网址将包含微服务名称,例如/api/dictionary/api/dictionary/user_types/api/dictionary/role_types投放,而/api/data将投放/api/data/users/api/data/roles。这意味着随着我们创建更多微服务,URL将随时间而变化。每次我们这样做,消费者(前端)都必须改变。

  2. 网址将基于实体名称,例如/api/users/api/user_types/api/roles/api/role_types。缺点是Zuul配置必须包含系统管理的每个实体的显式配置。

  3. 上述哪种方法是正确的?

1 个答案:

答案 0 :(得分:2)

Manmay的说法是正确的。你应该采用第一种方法来获得长期收益。 如果您仍想要替代方案,那么您可以通过以下方式配置API网关来结合这两种方法:它将路由您的请求

  • / api / users - > / API /数据/使用者
  • / api / user_types - > / API /字典/ user_types
  • / api / roles - > / API /数据/角色
  • / api / role_types - > / API /字典/ role_types

通过这种方法,您不必妥协任何问题,如维护或客户端更改。