![](https://img-blog.csdnimg.cn/img_convert/6cc657529fb3920364d88e221ab8a562.png#align=left&display=inline&height=595&margin=[object Object]&originHeight=595&originWidth=443&size=0&status=done&style=none&width=443)
客户端发送请求到gateway,由gateway handler mapping进行路由,发送到gateway web handler。这个handler处理请求相关的filter链。filter分“pre”和“post”两种处理逻辑。
配置
配置predicates和filters有两种方式:简写和全参数展开。
简写方式
公式:name=name,regexp,例如
spring:
cloud:
gateway:
routes:
- id: after_route
uri: https://example.org
predicates:
- Cookie=mycookie,mycookievalue
全参数展开方式
如果yaml文件标准一样进行配置,通常会有name和args两个键,args是一个map的键值对组配置predicate或者filter。如下:
spring:
cloud:
gateway:
routes:
- id: after_route
uri: https://example.org
predicates:
- name: Cookie
args:
name: mycookie
regexp: mycookievalue
路由工厂
每种路由的判断依据都是根据Http请求的不同属性。
- 匹配某时间之后的请求
- 匹配某个时间之前的请求
- 匹配两个时间之间的请求
- 匹配请求包含指定Cookie
- 匹配请求包含指定Header
- 匹配特定Host
- 匹配请求方法
- 匹配请求路径
- 匹配查询参数
- 匹配远程地址
- 根据权重路由
匹配某时间之后的请求
spring:
cloud:
gateway:
routes:
- id: after_route
uri: https://example.org
predicates:
- After=2017-01-20T17:42:47.789-07:00[America/Denver]
**
匹配某个时间之前的请求
spring:
cloud:
gateway:
routes:
- id: before_route
uri: https://example.org
predicates:
- Before=2017-01-20T17:42:47.789-07:00[America/Denver]
匹配两个时间之间的请求
spring:
cloud:
gateway:
routes:
- id: between_route
uri: https://example.org
predicates:
- Between=2017-01-20T17:42:47.789-07:00[America/Denver], 2017-01-21T17:42:47.789-07:00[America/Denver]
匹配请求包含指定Cookie
value为正则表达式
spring:
cloud:
gateway:
routes:
- id: cookie_route
uri: https://example.org
predicates:
- Cookie=chocolate, ch.p
匹配请求包含指定Header
value为正则表达式
spring:
cloud:
gateway:
routes:
-