(41)java Spring Cloud企業快速開發架構之SpringCloud-Gateway的常用路由斷言工廠
SpringCloud Gateway 內建了許多路由斷言工廠,可以通過配置的方式直接使用,也可以組合使用多個路由斷言工廠。接下來為大家介紹幾個常用的路由斷言工廠類。
需要框架原始碼的朋友可以看我個人簡介聯絡我。
1)Path 路由斷言工廠
Path 路由斷言工廠接收一個引數,根據 Path 定義好的規則來判斷訪問的 URI 是否匹配。
spring: cloud: gateway: routes: - id: host_route uri: http://minglisoft.cn predicates: - Path=/blog/detail/{segment}
如果請求路徑為 /blog/detail/xxx,則此路由將匹配。也可以使用正則,例如 /blog/detail/** 來匹配 /blog/detail/ 開頭的多級 URI。
我們訪問本地的閘道器: :2001/blog/detail/36185 ,可以看到顯示的是 http://minglisoft.cn/blog/det... 對應的內容。
2)Query 路由斷言工廠
Query 路由斷言工廠接收兩個引數,一個必需的引數和一個可選的正規表示式。
spring: cloud: gateway: routes: - id: query_route uri:
如果請求包含一個值與 ba 匹配的 foo 查詢引數,則此路由將匹配。bar 和 baz 也會匹配,因為第二個引數是正規表示式。
測試連結: :2001/?foo=baz。
3)Method 路由斷言工廠
Method 路由斷言工廠接收一個引數,即要匹配的 HTTP 方法。
spring: cloud: gateway: routes: - id: method_route uri: - Method=GET
4)Header 路由斷言工廠
Header 路由斷言工廠接收兩個引數,分別是請求頭名稱和正規表示式。
spring: cloud: gateway: routes: - id: header_route uri: \d+
如果請求中帶有請求頭名為 x-request-id,其值與 \d+ 正規表示式匹配(值為一個或多個數字),則此路由匹配。
如果你想學習更多路由斷言工廠的用法,可以參考官方文件進行學習。
自定義路由斷言工廠
自定義路由斷言工廠需要繼承 AbstractRoutePredicateFactory 類,重寫 apply 方法的邏輯。
在 apply 方法中可以通過 exchange.getRequest() 拿到 ServerHttpRequest 物件,從而可以獲取到請求的引數、請求方式、請求頭等資訊。
apply 方法的引數是自定義的配置類,在使用的時候配置引數,在 apply 方法中直接獲取使用。
命名需要以 RoutePredicateFactory 結尾,比如 CheckAuthRoutePredicateFactory,那麼在使用的時候 CheckAuth 就是這個路由斷言工廠的名稱。程式碼如下所示。
@Componentpublic class CheckAuthRoutePredicateFactory extends AbstractRoutePredicateFactory<CheckAuthRoutePredicateFactory.Config> { public CheckAuthRoutePredicateFactory() { super(Config.class); } @Override public Predicate<ServerWebExchange> apply(Config config) { return exchange -> { System.err.println("進入了CheckAuthRoutePredicateFactory\t" + config.getName()); if (config.getName().equals("zhangsan")) { return true; } return false; }; } public static class Config { private String name; public void setName(String name) { this.name = name; } public String getName() { return name; } } }
使用示例如下所示:
spring: cloud: gateway: routes: - id: customer_route uri:
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/70006413/viewspace-2793751/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- java Spring Cloud企業快速開發架構之SpringCloud-Spring Cloud EurekaJavaSpringCloud架構GC
- Spring Cloud Gateway 路由轉發之After(Before)路由斷言工廠使用SpringCloudGateway路由
- (2)java Spring Cloud+Spring boot企業快速開發架構之Spring Cloud版本介紹JavaCloudSpring Boot架構
- (44)java Spring Cloud企業快速開發架構之Gateway實戰案例限流、熔斷、跨JavaSpringCloud架構Gateway
- java Spring Cloud企業快速開發架構之Spring Boot Starter的介紹及使用JavaCloud架構Spring Boot
- java Spring Cloud企業快速開發架構之Ribbon結合RestTemplate實現負載均衡JavaSpringCloud架構REST負載
- java Spring Cloud企業快速開發架構之SpringCloud-Eureka的REST API及API擴充套件JavaSpringCloud架構GCRESTAPI套件
- (20)java Spring Cloud企業快速開發架構之SpringCloud-Ribbon自定義負載均衡策略JavaSpringCloud架構GC負載
- 11.Spring Cloud 分散式、微服務、雲架構企業快速開發架構之Linux 磁碟管理SpringCloud分散式微服務架構Linux
- 7.Spring Cloud 分散式、微服務、雲架構企業快速開發架構之Linux 遠端登入SpringCloud分散式微服務架構Linux
- 8.Spring Cloud 分散式、微服務、雲架構企業快速開發架構之Linux 檔案基本屬性SpringCloud分散式微服務架構Linux
- (1)java Spring Cloud+mybatis企業快速開發架構之微服務是什麼?它的優缺點有哪些?JavaSpringCloudMyBatis架構微服務
- 9.Spring Cloud 分散式、微服務、雲架構企業快速開發架構之Linux 檔案與目錄管理SpringCloud分散式微服務架構Linux
- 10.Spring Cloud 分散式、微服務、雲架構企業快速開發架構之Linux 使用者和使用者組SpringCloud分散式微服務架構Linux
- Spring Cloud Alibaba 多租戶 saas 設計的企業開發架構SpringCloud架構
- SpringCloud-Gateway 閘道器路由、斷言、過濾SpringGCCloudGateway路由
- 企業快速開發平臺Spring Cloud+Spring Boot+Mybatis之Highcharts 基本餅圖CloudSpring BootMyBatis
- 企業快速開發平臺Spring Cloud+Spring Boot+Mybatis+ElementUICloudSpring BootMyBatisUI
- Spring Cloud Alibaba 分散式微服務+多租戶saas企業開發架構SpringCloud分散式微服務架構
- Spring Cloud Alibaba 分散式微服務+多租戶saas企業開發架構SpringCloud分散式微服務架構
- 五、企業快速開發平臺Spring Cloud+Spring Boot+Mybatis+ElementUI之Lua 變數CloudSpring BootMyBatisUI變數
- CAS SSO單點登入客戶端環境搭建之java版spring cloud 分散式微服務企業快速架構客戶端JavaSpringCloud分散式微服務架構
- Java架構-(一)spring cloud微服務分散式雲架構 - Spring Cloud簡介Java架構SpringCloud微服務分散式
- Spring Cloud微服務分散式雲架構 - 整合企業架構的技術點SpringCloud微服務分散式架構
- java版Spring Cloud 企業架構之CAS SSO單點登入服務端環境搭建JavaSpringCloud架構服務端
- Spring Cloud雲服務架構 - 企業分散式微服務雲架構構建SpringCloud架構分散式微服務
- spring cloud微服務分散式雲架構- Config 快速開始SpringCloud微服務分散式架構
- 十六、企業快速開發平臺Spring Cloud+Spring Boot+Mybatis+ElementUI之Lua 檔案 I/OCloudSpring BootMyBatisUI
- (二)spring cloud微服務分散式雲架構 - 整合企業架構的技術點SpringCloud微服務分散式架構
- (二)spring cloud微服務分散式雲架構-整合企業架構的技術點SpringCloud微服務分散式架構
- 整合spring cloud雲服務架構 - 企業分散式微服務雲架構構建SpringCloud架構分散式微服務
- JAVA漢諾塔遞迴 之SpringCloud企業分散式微服務雲架構快速開發平臺Java遞迴SpringGCCloud分散式微服務架構
- Spring Cloud + Spring Boot企業架構之CAS SSO單點登入服務端環境搭建CloudSpring Boot架構服務端
- CAS SSO單點登入客戶端環境搭建之Spring Cloud + Spring Boot 企業架構客戶端CloudSpring Boot架構
- Spring Cloud + Spring Boot 企業架構之CAS SSO單點登入客戶端環境搭建CloudSpring Boot架構客戶端
- (四)整合spring cloud雲服務架構 - 企業分散式微服務雲架構構建SpringCloud架構分散式微服務
- Spring Cloud Alibaba 多租戶saas企業開發架構技術選型和設計方案SpringCloud架構
- CAS SSO單點登入服務端環境搭建之spring cloud + springboot分散式微服務企業快速架構服務端CloudSpring Boot分散式微服務架構