微服务网关4-不同的路由断言分类

内置路由断言工厂

Predicate(断言) 用于进行条件判断,只有断言都返回真,才会真正的执行路由。

SpringCloud Gateway包括许多内置的断言工厂,所有这些断言都与HTTP请求的不同属性匹配。具体如下:

1、基于Datetime

此类型的断言根据时间做判断,主要有三个:

  • AfterRoutePredicateFactory: 接收一个日期参数,判断请求日期是否晚于指定日期
  • BeforeRoutePredicateFactory: 接收一个日期参数,判断请求日期是否早于指定日期
  • BetweenRoutePredicateFactory: 接收两个日期参数,判断请求日期是否在指定时间段
- After=2019-12-31T23:59:59.789+08:00[Asia/Shanghai] #晚于这个时间才执行

2、基于远程地址

RemoteAddrRoutePredicateFactory:接收一个IP地址段,判断请求主机地址是否在地址段中。

- RemoteAddr=192.168.1.1/24

3、基于Cookie

CookieRoutePredicateFactory:接收两个参数,cookie 名字和一个正则表达式。 判断请求cookie是否具有给定名称且值与正则表达式匹配。

- Cookie=chocolate, ch.

4、基于Header

HeaderRoutePredicateFactory:接收两个参数,标题名称和正则表达式。 判断请求Header是否具有给定名称且值与正则表达式匹配。

- Header=X-Request-Id, \d+

5、基于Host

HostRoutePredicateFactory:接收一个参数,主机名模式。判断请求的Host是否满足匹配规则。

- Host=**.testhost.org

6、基于Method请求方法

MethodRoutePredicateFactory:接收一个参数,判断请求类型是否跟指定的类型匹配。

- Method=GET

7、基于Path请求路径

PathRoutePredicateFactory:接收一个参数,判断请求的URI部分是否满足路径规则。

- Path=/foo/**

8、基于Query请求参数

QueryRoutePredicateFactory :接收两个参数,请求param和正则表达式, 判断请求参数是否具有给定名称且值与正则表达式匹配。

- Query=baz, ba.

9、基于路由权重

WeightRoutePredicateFactory:接收一个[组名,权重],然后对于同一个组内的路由按照权重转发

routes:
- id: weight_route1 
  uri: host1 
  predicates:
  - Path=/product/**
  - Weight=group3, 1
- id: weight_route2 
  uri: host2 
  predicates:
  - Path=/product/**
  - Weight= group3, 9
posted @ 2020-11-01 21:10  碧水云天4  阅读(339)  评论(0编辑  收藏  举报