1. 程式人生 > 實用技巧 >微服務閘道器4-不同的路由斷言分類

微服務閘道器4-不同的路由斷言分類

內建路由斷言工廠

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