参考官网:https://docs.spring.io/spring-cloud-gateway/docs/3.0.3/reference/html/#the-after-route-predicate-factory
时间路由断言
匹配某时间之后的请求
官网例子:
spring:
cloud:
gateway:
routes:
- id: after_route
uri: https://example.org
predicates:
- After=2021-09-22T23:28:06.296+08:00[Asia/Shanghai]
该路由规则匹配的是 2021-09-22T23:28:06 之后的请求。
这里使用的时间是 ZonedDateTime 那该怎么写?参考如下打印出来的时间
ZonedDateTime zdt = ZonedDateTime.now();
System.out.println(zdt);
匹配某时间之前的请求
spring:
cloud:
gateway:
routes:
- id: before_route
uri: https://example.org
predicates:
- Before=2021-09-22T22:41:06.296+08:00[Asia/Shanghai]
该路由转发规则匹配的是 2021-09-22T22:41:06 之前的请求
匹配某时间段的请求
spring:
cloud:
gateway:
routes:
- id: between_route
uri: https://example.org
predicates:
- Between=2021-09-22T22:41:06.296+08:00[Asia/Shanghai], 2021-09-22T22:48:06.296+08:00[Asia/Shanghai]
该路由匹配规则匹配到是某个时间段发送过来的请求
Cookie路由断言
spring:
cloud:
gateway:
routes:
- id: cookie_route
uri: https://example.org
predicates:
- Cookie=username, zhangsan
该路由匹配规则是,发送到网关的请求需要携带 Cookie,Cookie的key是username,value是zhangsan
补充:
使用 postman 如何在发送的请求中添加 cookie?
请求头路由断言
spring:
cloud:
gateway:
routes:
- id: header_route
uri: https://example.org
predicates:
- Header=X-Request-Id, \d+
该路由规则匹配的是,请求头中含有 名为 X-Request-Id, 值为 \d+ (这是是正则表达式,表示的是任意数字)
主机路由断言
spring:
cloud:
gateway:
routes:
- id: host_route
uri: https://example.org
predicates:
- Host=**.somehost.org,**.anotherhost.org
该路由规则匹配的是,由 somehost.org 和 anotherhost.org 域名发送过来的请求
方法路由断言
spring:
cloud:
gateway:
routes:
- id: method_route
uri: https://example.org
predicates:
- Method=GET,POST
该路由规则表示,只转发 GET 和 POST 的请求
路径路由匹配规则 (*)
spring:
cloud:
gateway:
routes:
- id: path_route
uri: https://example.org
predicates:
- Path=/auth/**
该路由规则匹配的是,请求路径中含有 /auth 的所有请求