我正在尝试使用zuul配置API呼叫路由器,以转发呼叫。
有两种服务:用户服务正在使用路径版本控制,即/v1/users
,/v2/users
,...
帐户服务不使用路径版本控制,因此所有路由都省略了v*
前缀(/accounts
)。
要提供一个公共界面,我想在我的api路由器中接受对/v*/accounts
的调用,并将其转发到我的帐户服务上的/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
不幸的是,这没有预期的效果。 剥离的帐户路径中没有任何内容,它们将按原样转发。
如果我删除正则表达式(v*
)并放入path: /v1/accounts/**
,则会删除整个前缀/v1/accounts
。显然,正则表达式可防止删除前缀,从而使path: /v1/**/accounts/**
起作用。但是,我想避免明确命名所有版本,因为我们的API目前正在迅速发展。
使用全局zuul.prefix
也无济于事,因为您只能全局决定将其剥离或保留完整的AFAIK。
我主要依靠on this documentation。
是否有更好的方法来指定转发的URL的格式?