Zuul url 与 spring 引导映射,Eureka
Zuul url mapping with spring boot,Eureka
我正在使用微服务架构构建 Rest api。我有多个 api 供用户使用,我们已将其制作成多个项目。除了无法将面向 url 的用户映射到 zuul.url 中的应用程序 url 之外,我已经准备好了其他所有东西。
面向 url 的用户是:user/v1/accountholders/{id}/cards,而我的应用程序的实际 url 是 /user-cards/v1/accountholders/{id}/cards。
这里的id是路径变量。下面是其他类似的 api url 所以如果有办法在 zuul 中通用地配置它们。另外应用的上下文根url也是Eureka中的项目名
Other similar urls are:
client side:- /user/v1/accountholders/{id}/cards/{cardid}
application:- /user-cards/v1/accountholders/{id}/cards/{cardid}
client side:- /user/v1/accountholders
application:- /user-cardholder/v1/accountholder
client side:- /user/v1/accountholders
application:- /user-cardholder/v1/accountholder
client side:- /user/v1/accountholders/{id}
application:- /user-cardholder/v1/accountholders/{id}
client side:- /user/v1/accountholders/{id}/accounts
application:- /user-accounts/v1/accountholders/{id}/accounts
client side:- /user/v1/accountholders/{id}/accounts/{accid}
application:- /user-accounts/v1/accountholders/{id}/accounts/{accid}
需要一些帮助来在 zuul 的属性或 yml 文件中进行设置。我还没有能够在映射方面取得任何进展。任何输入都会有所帮助。
已解决:-
从@Daniel 获得输入后(这是公认的答案)这就是我在 zuul 配置中使用的:-
zuul:
routes:
User-Cards:
path: /user/v1/accountholders/*/cards/**
url: http://desktop-uvkv1ed:9999/user-cards/v1/accountholders
User-Transactions1:
path: /user/v1/accountholders/*/transactions
url: http://desktop-uvkv1ed:5555/user-transactions/v1/accountholders
service-id: User-Transactions
User-Transactions2:
path: /user/v1/accountholders/*/accounts/*/transactions
url: http://desktop-uvkv1ed:5555/user-transactions/v1/accountholders
service-id: User-Transactions
User-Accounts:
path: /user/v1/accountholders/*/accounts/**
url: http://desktop-uvkv1ed:7777/user-accounts/v1/accountholders
User-Cardholders:
path: /user/v1/accountholders/**
url: http://desktop-uvkv1ed:8888/user-cardholders/v1/accountholders
可以通过提供正确的 Zuul 配置来实现您想要做的事情。假设您在端口 8081 上有用户持卡人服务 运行,在端口 8082 上有用户帐户服务,这样您就可以成功地响应以下请求:
http://localhost:8081/user-cardholder/accountholders/{id}
http://localhost:8082/user-account/accountholders/{id}/accounts/{accid}
如果这有效,那么您可以通过使用以下 zuul 配置来实现您对这两个服务的尝试:
zuul:
routes:
cardholder:
path: /user/accountholders/*
url: http://localhost:8081/user-cardholder/accountholders/
account:
path: /user/accountholders/*/accounts/**
url: http://localhost:8082/user-accounts/accountholders/
不幸的是,您还必须添加更多配置——即使它们针对相同的后端服务——因为内部和外部 url 不同。否则你可以只添加选项 stripPrefix: false
并在内部使用与外部相同的选项。
我正在使用微服务架构构建 Rest api。我有多个 api 供用户使用,我们已将其制作成多个项目。除了无法将面向 url 的用户映射到 zuul.url 中的应用程序 url 之外,我已经准备好了其他所有东西。
面向 url 的用户是:user/v1/accountholders/{id}/cards,而我的应用程序的实际 url 是 /user-cards/v1/accountholders/{id}/cards。
这里的id是路径变量。下面是其他类似的 api url 所以如果有办法在 zuul 中通用地配置它们。另外应用的上下文根url也是Eureka中的项目名
Other similar urls are:
client side:- /user/v1/accountholders/{id}/cards/{cardid}
application:- /user-cards/v1/accountholders/{id}/cards/{cardid}
client side:- /user/v1/accountholders
application:- /user-cardholder/v1/accountholder
client side:- /user/v1/accountholders
application:- /user-cardholder/v1/accountholder
client side:- /user/v1/accountholders/{id}
application:- /user-cardholder/v1/accountholders/{id}
client side:- /user/v1/accountholders/{id}/accounts
application:- /user-accounts/v1/accountholders/{id}/accounts
client side:- /user/v1/accountholders/{id}/accounts/{accid}
application:- /user-accounts/v1/accountholders/{id}/accounts/{accid}
需要一些帮助来在 zuul 的属性或 yml 文件中进行设置。我还没有能够在映射方面取得任何进展。任何输入都会有所帮助。
已解决:- 从@Daniel 获得输入后(这是公认的答案)这就是我在 zuul 配置中使用的:-
zuul:
routes:
User-Cards:
path: /user/v1/accountholders/*/cards/**
url: http://desktop-uvkv1ed:9999/user-cards/v1/accountholders
User-Transactions1:
path: /user/v1/accountholders/*/transactions
url: http://desktop-uvkv1ed:5555/user-transactions/v1/accountholders
service-id: User-Transactions
User-Transactions2:
path: /user/v1/accountholders/*/accounts/*/transactions
url: http://desktop-uvkv1ed:5555/user-transactions/v1/accountholders
service-id: User-Transactions
User-Accounts:
path: /user/v1/accountholders/*/accounts/**
url: http://desktop-uvkv1ed:7777/user-accounts/v1/accountholders
User-Cardholders:
path: /user/v1/accountholders/**
url: http://desktop-uvkv1ed:8888/user-cardholders/v1/accountholders
可以通过提供正确的 Zuul 配置来实现您想要做的事情。假设您在端口 8081 上有用户持卡人服务 运行,在端口 8082 上有用户帐户服务,这样您就可以成功地响应以下请求:
http://localhost:8081/user-cardholder/accountholders/{id}
http://localhost:8082/user-account/accountholders/{id}/accounts/{accid}
如果这有效,那么您可以通过使用以下 zuul 配置来实现您对这两个服务的尝试:
zuul:
routes:
cardholder:
path: /user/accountholders/*
url: http://localhost:8081/user-cardholder/accountholders/
account:
path: /user/accountholders/*/accounts/**
url: http://localhost:8082/user-accounts/accountholders/
不幸的是,您还必须添加更多配置——即使它们针对相同的后端服务——因为内部和外部 url 不同。否则你可以只添加选项 stripPrefix: false
并在内部使用与外部相同的选项。