Skip to Content

Gateway断言(Predicate)工厂

在配置文件中写的断言规则只是字符串,这些字符串会被Predicate Factory读取并处理,转变为路由判断的条件。

多个Route Predicate工厂可以进行组合,并通过逻辑and。

例如 Path=/user/** 是按照路径匹配,

这个规则是由 org.springframework.cloud.gateway.handler.predicate.PathRoutePredicateFactory 类来处理的,

像这样的断言工厂在SpringCloudGateway还有十几个:

名称说明示例
After是某个时间点后的请求- After=2037-01-20T17:42:47.789-07:00[America/Denver]
Before是某个时间点之前的请求- Before=2031-04-13T15:14:47.433+08:00[Asia/Shanghai]
Between是某两个时间点之前的请求- Between=2037-01-20T17:42:47.789-07:00[America/Denver], 2037-01-21T17:42:47.789-07:00[America/Denver]
Cookie请求必须包含某些cookie- Cookie=chocolate, ch.p,常用于 WebSession 判断,可以带正则表达式
Header请求必须包含某些header- Header=X-Request-Id, \d+,可以带正则表达式
Host请求必须是访问某个host(域名)- Host=.somehost.org,.anotherhost.org,也可以写通配符*.beefic.com
Method请求方式必须是指定方式- Method=GET,POST
Path请求路径必须符合指定规则- Path=/red/{segment},/blue/*** 匹配一段,** 递归匹配
Query请求参数必须包含指定参数- Query=name, Jack 或者 - Query=name,可以带正则表达式
RemoteAddr请求者的ip必须是指定范围- RemoteAddr=192.168.1.1/24,可以给管理平台使用
Weight权重处理- Weight=group1, 80,与同组其它路由组成 100%:路由 A 80%,路由 B 20%,适用于灰度发布 / AB 流量

Last updated on