Predicate(断言;谓词)用于进行条件判断,是由断言返回都返回TRUE,才会真正执行路由
SpringCloudGateway 包括许多内置的断言工厂,所有这些断言都与HTTP请求的不同属性匹配。
基于Datatime类型的断言工厂
此类型的断言根据时间做判断
AfterRoutePredicateFactory 接收一个日期参数,判断请求日期是否晚于指定日期 BeforeRoutePredicateFactory 接收一个日期参数,判断请求日期是否晚于指定日期 BetweenRoutePredicateFactory 接收两个日期参数,判断请求日志是否在指定的时间段内
-After=2022-01-01T00:00:00.000+08:00[Asia/Shanghai]
基于远程地址的断言工厂
RemoteAddrRoutePredicateFactory 接收一个IP地址段,判断请求主机的地址是否在地址段中
-RemoteAddr=192.168.0.1/255
基于Cookie的断言工厂
CookieRoutePredicateFactory 接收两个参数,cookie名字和一个正则表达式。判断请求cookie是否具有给定名称且值与正则表达式匹配。
-Cookie=
基于Header的断言工厂
HeaderRoutePredicateFactory 接收两个参数,标题名称和正则表达式。判断请求Header中是否包含指定的名称且值与正则表达式匹配。
-Header=
基于Host的断言工厂
HostRoutePredicateFactory 接收一个参数,主机名模式。判断请求的Host是否满足条件。
-Host=*.xxx.com
基于Method请求方法的断言工厂
MethorRoutePredicateFactory 接收一个参数,判断请求类型是否跟指定类型匹配、
-Method=GET
基于Path请求路径的断言工厂
PathRoutePredicateFactory 接收一个参数,判断请求的URI部分是否满足路径规则
-Path=/product/{xx}
基于Query参数的断言工厂
QueryRoutePredicateFactory 接收两个参数。请求参数名称和正则表达式,判断请求参数是否具有给定的参数,且值与正则表达式匹配。
-Query=
基于路由权重的断言工厂
WeightRoutePredicateFactory 接收一个[组名,权重],然后对这个组内的路由按照权重转发
routes:
-id: weight_route_1
uri: host1
predicates:
-Path=/product/**
-Weight=group1,1
-id: weight_route_2
uri: host2
predicates:
-Path=/product/**
-Weight=group1,9