去掉 Zuul API 网关中的前缀

ela*_*tic 5 spring-boot netflix-zuul api-gateway

我正在尝试使用转发调用的 zuul 配置 API 调用路由器。有两种服务:users 服务使用路径版本控制,即/v1/users, /v2/users,...accounts 服务不使用路径版本控制,因此所有路由都省略前缀v*( /accounts)。

为了提供一个通用接口,我想接受对/v*/accounts我的 api 路由器的调用并将它们转发到/accounts我的帐户服务。呼叫应按/v*/user/原样转发至用户服务。

我的 application.yml 看起来像这样

zuul:
  routes:
    users: 
      path: /v*/users/**
      url: ${microservices.usersServiceUrl}
      stripPrefix: false
    accounts: 
      path: /v*/accounts/**
      url: ${microservices.accountsServiceUrl}
      stripPrefix: true
Run Code Online (Sandbox Code Playgroud)

不幸的是,这并没有达到预期的效果。帐户路径中的任何内容都不会被删除,并且会按原样转发。

如果我删除正则表达式 ( v*) 并放入path: /v1/accounts/**,则整个前缀/v1/accounts将被删除。显然,正则表达式可以防止前缀被剥离,从而发挥path: /v1/**/accounts/**作用。然而,我想避免明确命名所有版本,因为我们的 API 目前正在快速发展。

使用全局zuul.prefix也没有帮助,因为你只能全局决定将其剥离或保持完整。

我主要依赖这个文档

有没有更好的方法来指定转发的 URL 的格式?