3

我正在使用微服務體系結構構建Rest api。我爲多個項目製作了多個apis用戶。除了我無法將面向用戶的url映射到zuul中的應用程序url之外,我還有其他一切準備就緒。Zuul URL映射與彈簧引導,尤里卡

面向url的用戶是:user/v1/accountholders/{id}/cards,我的應用程序的實際url是/ user-cards/v1/accountholders/{id}/cards。

這裏id是路徑變量。下面是其他類似的API網址,所以如果有一種方法可以在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 
+0

乍一看,我不認爲你想要的是現在可能的,儘管支持正則表達式映射的請求應該儘快登陸。 https://github.com/spring-cloud/spring-cloud-netflix/pull/699 – spencergibb

+0

你能幫助我的方法,我可以使用我可以玩的應用程序的網址,但不是面向用戶的網址,以便我可以輕鬆執行映射。 –

+0

@spencergibb實際上,這可能是因爲實質上所有可以追溯到支持螞蟻式樣匹配的'AbstractUrlMappingHandler'的子類。 –

回答

7

這是可能實現你想什麼通過給予正確的Zuul配置來完成。讓我們假設你有用戶持卡人的服務端口8081上運行,並於8082用戶帳戶的服務,使您能夠成功地回答請求逆着:

http://localhost:8081/user-cardholder/accountholders/{id} 
http://localhost:8082/user-account/accountholders/{id}/accounts/{accid} 

如果這是工作,那麼你可以achive你想什麼爲這兩個服務使用以下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/ 

不幸的是,你還必須添加更多的configs - 即使他們違背相同的後端服務 - 由於是內部和外部URL都不同。否則,您可以添加選項stripPrefix: false並在內部使用與外部相同的內容。

+0

THANKs丹尼爾..這幫了很多 –