首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >与弹簧启动的Zuul url映射,尤里卡

与弹簧启动的Zuul url映射,尤里卡
EN

Stack Overflow用户
提问于 2015-12-15 23:47:41
回答 1查看 6.9K关注 0票数 5

我正在使用微服务架构构建Rest。我为用户提供了多个apis,我们已经将其转化为多个项目。除了我无法将用户面向url映射到zuul中的应用程序url之外,我已经做好了其他一切准备。

面对url的用户是: user/v1/accountholders/{id}/cards,我的应用程序的实际url是/ user -cards/v1/accountholders/{id}/cards。

这里id是路径变量。下面是其他类似的api url,所以如果有一种方法可以在zuul中通用地配置它们。此外,应用程序url的上下文根也是Eureka中的项目名称。

代码语言:javascript
复制
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配置中使用的:-

代码语言:javascript
复制
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
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2015-12-16 22:39:38

通过给出正确的Zuul配置,就可以实现您想要做的事情。假设您在端口8081上运行了用户持卡人服务,在8082上运行了用户帐户服务,这样您就可以成功地响应以下请求:

代码语言:javascript
复制
http://localhost:8081/user-cardholder/accountholders/{id} 
http://localhost:8082/user-account/accountholders/{id}/accounts/{accid}

如果这是有效的,那么您可以通过使用以下zuul配置来实现您对这两个服务的尝试:

代码语言:javascript
复制
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/

不幸的是,由于内部和外部urls是不同的,您还必须添加更多的信任--即使它们与相同的后端服务相反。否则,您只需添加选项stripPrefix: false并在内部使用与外部相同的选项。

票数 10
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/34301614

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档