在上一篇二十四、springCloudAlibaba-gateway整合nacos 我们使用了Path断言,这里继续介绍更多内置的断言工厂
1、路由断言工厂作用(Route Predicate Factories)
当请求gateway的时候,使用断言对请求进行匹配,如果匹配成功就路由转发,如果匹配失败就404
这里尝试下
2、基于查询条件的断言工厂
The Query Route Predicate Factory
spring:
cloud:
gateway:
routes:
- id: query_route
uri: https://example.org
predicates:
- Query=green
我们在之前的例子上机上这个
- Query=green
我们访问
http://localhost:8088/order-service/order/add
返回
This application has no configured error view, so you are seeing this as a fallback.
Mon Nov 13 20:55:15 CST 2023
[5a51068b-1] There was an unexpected error (type=Not Found, status=404).
加上参数green
http://localhost:8088/order-service/order/add?green=1
就正常返回了。
假设我们改为
- Query=green,hel.
那么必须有参数green=hel*,比如
http://localhost:8088/order-service/order/add?green=helo 不然都匹配不到404
配置如
gateway:
#路由规则
routes:
- id: order_route # 路由的唯一标识
uri: lb://order-service #需要转发的地址.lb本地负载均衡策略
#断言规则 用于路由规则的匹配
predicates:
- Path=/order-service/**
- Query=green,hel.
#匹配请求http://localhost:8088/order-service/order/add
#过滤器 用于过滤请求
filters:
- StripPrefix=1 #转发之前去掉第一层路径
#http://localhost:8010/order/add
#- id: stock_route
3、再尝试下基于After时间的断言工厂
The After Route Predicate Factory
这里的时间格式是基于ZonedDateTime类,我们先获取下
public static void main(String[] args) {
System.out.println(ZonedDateTime.now());
}
这里获取的格式是
2023-11-13T22:05:39.811+08:00[Asia/Shanghai]
我们配置未来一个钟
gateway:
#路由规则
routes:
- id: order_route # 路由的唯一标识
uri: lb://order-service #需要转发的地址.lb本地负载均衡策略
#断言规则 用于路由规则的匹配
predicates:
- Path=/order-service/**
- Query=green,hel.
- After=2023-11-13T22:05:39.811+08:00[Asia/Shanghai]
#匹配请求http://localhost:8088/order-service/order/add
#过滤器 用于过滤请求
filters:
- StripPrefix=1 #转发之前去掉第一层路径
#http://localhost:8010/order/add
#- id: stock_route
再访问http://localhost:8088/order-service/order/add?green=helo 就404了,我们再把时间改回来
- After=2023-11-13T21:05:39.811+08:00[Asia/Shanghai]
再请求,应为当前时间是配置时间之后,所以正常返回了
还有
- The Before Route Predicate Factory(之前时间)
- The Between Route Predicate Factory(两个时间之间)
- The Cookie Route Predicate Factory(Cookie)
- The Header Route Predicate Factory(请求头Header)
- The Host Route Predicate Factory(Host)
- The Method Route Predicate Factory(请求方法Get,Post)
- The Path Route Predicate Factory(路径)
- The RemoteAddr Route Predicate Factory(远程地址)
等等,参考官网的即可,这里就不演示了。