参考官网:https://docs.spring.io/spring-cloud-gateway/docs/3.0.3/reference/html/#the-after-route-predicate-factory

时间路由断言

匹配某时间之后的请求

官网例子:

  1. spring:
  2. cloud:
  3. gateway:
  4. routes:
  5. - id: after_route
  6. uri: https://example.org
  7. predicates:
  8. - After=2021-09-22T23:28:06.296+08:00[Asia/Shanghai]

该路由规则匹配的是 2021-09-22T23:28:06 之后的请求。

这里使用的时间是 ZonedDateTime 那该怎么写?参考如下打印出来的时间

  1. ZonedDateTime zdt = ZonedDateTime.now();
  2. System.out.println(zdt);

匹配某时间之前的请求

  1. spring:
  2. cloud:
  3. gateway:
  4. routes:
  5. - id: before_route
  6. uri: https://example.org
  7. predicates:
  8. - Before=2021-09-22T22:41:06.296+08:00[Asia/Shanghai]

该路由转发规则匹配的是 2021-09-22T22:41:06 之前的请求

匹配某时间段的请求

  1. spring:
  2. cloud:
  3. gateway:
  4. routes:
  5. - id: between_route
  6. uri: https://example.org
  7. predicates:
  8. - Between=2021-09-22T22:41:06.296+08:00[Asia/Shanghai], 2021-09-22T22:48:06.296+08:00[Asia/Shanghai]

该路由匹配规则匹配到是某个时间段发送过来的请求

Cookie路由断言

  1. spring:
  2. cloud:
  3. gateway:
  4. routes:
  5. - id: cookie_route
  6. uri: https://example.org
  7. predicates:
  8. - Cookie=username, zhangsan

该路由匹配规则是,发送到网关的请求需要携带 Cookie,Cookie的key是username,value是zhangsan

补充:
使用 postman 如何在发送的请求中添加 cookie?
image.png
image.png

请求头路由断言

  1. spring:
  2. cloud:
  3. gateway:
  4. routes:
  5. - id: header_route
  6. uri: https://example.org
  7. predicates:
  8. - Header=X-Request-Id, \d+

该路由规则匹配的是,请求头中含有 名为 X-Request-Id, 值为 \d+ (这是是正则表达式,表示的是任意数字)

补充:
如何添加请求头信息?
image.png

主机路由断言

  1. spring:
  2. cloud:
  3. gateway:
  4. routes:
  5. - id: host_route
  6. uri: https://example.org
  7. predicates:
  8. - Host=**.somehost.org,**.anotherhost.org

该路由规则匹配的是,由 somehost.org 和 anotherhost.org 域名发送过来的请求

方法路由断言

  1. spring:
  2. cloud:
  3. gateway:
  4. routes:
  5. - id: method_route
  6. uri: https://example.org
  7. predicates:
  8. - Method=GET,POST

该路由规则表示,只转发 GET 和 POST 的请求

路径路由匹配规则 (*)

  1. spring:
  2. cloud:
  3. gateway:
  4. routes:
  5. - id: path_route
  6. uri: https://example.org
  7. predicates:
  8. - Path=/auth/**

该路由规则匹配的是,请求路径中含有 /auth 的所有请求