微服務閘道器4-不同的路由斷言分類
阿新 • • 發佈:2020-11-01
內建路由斷言工廠
Predicate(斷言)用於進行條件判斷,只有斷言都返回真,才會真正的執行路由。
SpringCloud Gateway包括許多內建的斷言工廠,所有這些斷言都與HTTP請求的不同屬性匹配。具體如下:
1、基於Datetime
此型別的斷言根據時間做判斷,主要有三個:
- AfterRoutePredicateFactory: 接收一個日期引數,判斷請求日期是否晚於指定日期
- BeforeRoutePredicateFactory: 接收一個日期引數,判斷請求日期是否早於指定日期
- BetweenRoutePredicateFactory: 接收兩個日期引數,判斷請求日期是否在指定時間段
- After=2019-12-31T23:59:59.789+08:00[Asia/Shanghai] #晚於這個時間才執行
2、基於遠端地址
RemoteAddrRoutePredicateFactory:接收一個IP地址段,判斷請求主機地址是否在地址段中。
- RemoteAddr=192.168.1.1/24
3、基於Cookie
CookieRoutePredicateFactory:接收兩個引數,cookie 名字和一個正則表示式。 判斷請求cookie是否具有給定名稱且值與正則表示式匹配。
- Cookie=chocolate, ch.
4、基於Header
HeaderRoutePredicateFactory:接收兩個引數,標題名稱和正則表示式。 判斷請求Header是否具有給定名稱且值與正則表示式匹配。
- Header=X-Request-Id, \d+
5、基於Host
HostRoutePredicateFactory:接收一個引數,主機名模式。判斷請求的Host是否滿足匹配規則。
- Host=**.testhost.org
6、基於Method請求方法
MethodRoutePredicateFactory:接收一個引數,判斷請求型別是否跟指定的型別匹配。
- Method=GET
7、基於Path請求路徑
PathRoutePredicateFactory:接收一個引數,判斷請求的URI部分是否滿足路徑規則。
- Path=/foo/**
8、基於Query請求引數
QueryRoutePredicateFactory :接收兩個引數,請求param和正則表示式, 判斷請求引數是否具有給定名稱且值與正則表示式匹配。
- Query=baz, ba.
9、基於路由權重
WeightRoutePredicateFactory:接收一個[組名,權重],然後對於同一個組內的路由按照權重轉發
routes:
- id: weight_route1
uri: host1
predicates:
- Path=/product/**
- Weight=group3, 1
- id: weight_route2
uri: host2
predicates:
- Path=/product/**
- Weight= group3, 9