spring:
cloud:
gateway:
routes:
- id: javaboy-route
uri: http://httpbin.org
predicates:
- After=2020-10-01T01:01:01+08:00[Asia/Shanghai]
表示在- After=2020-10-01T01:01:01+08:00[Asia/Shanghai]
之后才会转发
今天是 2020-10-11日,配置的是转发 2020-10-01 之后的请求,所以应该能转发,转发的地址还是http://httpbin.org
-(2)重启服务,访问:http://localhost:8080/get
转发成功,这就是 predicates 时间匹配的After
用法
除了 After
还有 Before
、Between
Before
表示在某个时间点之前的请求转发
Between
,表示在两个时间之间的请求转发,两个时间用英文的 “,” 隔开
可以指定只转发一种请求方法,请求方式 Method 有 Get 、Put 、POST、DELETE
spring:
cloud:
gateway:
routes:
- id: javaboy-route
uri: http://httpbin.org
predicates:
- Method=GET
Method=GET 表示,只允许 GET 请求
spring:
cloud:
gateway:
routes:
- id: javaboy-route
uri: www.javaboy.org
predicates:
- Path=/2019/0612/{
segment}
路径转发又回到开始的 HelloWorld 级别使用时的 Path 设置,{segment} 时一个占位符,表示满足 /2019/0612/ 这个规则的请求转发
spring:
cloud:
gateway:
routes:
- id: javaboy-route
uri: http://httpbin.org
predicates:
- Query=name
表示请求中必须有 name 参数才进行转发,否则不转发
一次没有 name 参数,一次有 那么参数的请求结果:
spring:
cloud:
gateway:
routes:
- id: javaboy-route
uri: http://httpbin.org
predicates:
- Query=name,java.*
表示参数名必须有 name,参数值必须有以 java 开头的值才进行转发
一次有 java 开头值,一次没有 java 开头的参数值请求进行测试,测试地址是http://httpbin.org
spring:
cloud:
gateway:
routes:
- id: javaboy-route
uri: http://httpbin.org
predicates:
- Query=name,java.*
- Method=GET
- After=2020-10-01T01:01:01+08:00[Asia/Shanghai]
这里的 - Query 、- Method 、- After 是 &&
的关系
spring:
cloud:
gateway:
routes:
- id: javaboy-route
uri: http://httpbin.org
predicates:
- Query=name,java.*
- Method=GET
- After=2020-10-01T01:01:01+08:00[Asia/Shanghai]
- id: javaboy-route2
uri: www.javaboy.org
predicates:
- Query=name,java.*
- Method=GET
- After=2020-10-01T01:01:01+08:00[Asia/Shanghai]
这里的 javaboy-route 和 javaboy-route2 是**谁在前面,谁匹配的
**关系,因为 yml 文件是有序的;比如访问 http://localhost:8080/get?name=javaboy ,javaboy-route 和 javaboy-route2 是都能匹配,因位置的关系,javaboy-route 在 yml 文件中靠前,所以这个请求只被 javaboy-route 转发