SpingCloudGateWay断言工厂

SpingCloudGateWay断言工厂

配置文件中的predicates属性值 Predicate Factory会被Predicate Factory读取并处理,转变为路由判断的条件

总共有11个Predicate Factory类型

Path=.....该规则会被org.springframework.cloud.gateway.handler.predicate.PathRoutePredicateFactory类处理

称**说明示例
After只接收某个时间点之后的请求- After=2037-01-20T17:42:47.789-07:00[America/Denver]
Before只接收某个时间点之前的请求- Before=2031-04-13T15:14:47.433+08:00[Asia/Shanghai]
Between只接收某两个时间点之前的请求- Between=2037-01-20T17:42:47.789-07:00[America/Denver], 2037-01-21T17:42:47.789-07:00[America/Denver]
Cookie只接收包含某些cookie的请求- Cookie=chocolate, ch.p
Header只接收包含某些header的请求- Header=X-Request-Id, \d+
Host只接收访问某个host(域名)的请求- Host=.somehost.org,.anotherhost.org
Method只接收指定请求方式请求- Method=GET,POST
Path只接收请求路径符合指定规则的请求- Path=/red/{segment},/blue/**
Query只接收请求参数必须包含指定参数的请求- Query=name, Jack或者- Query=name
RemoteAddr请求者的ip必须是指定范围的请求- RemoteAddr=192.168.1.1/24
Weight权重处理- Weight=group1, 2
The After Route Predicate Factory 指定日期时间之后
spring:
  cloud:
    gateway:
      routes: 
        - id: login-server 
          uri: lb://login-server 
          predicates: 
			- Path=/api/loginServer/**
            - After=2023-07-14T15:47:26.761+08:00[Asia/Shanghai]
#时间是ZonedDateTime类型的时间值
The Before Route Predicate Factory 指定日期时间之前
spring:
  cloud:
    gateway:
      routes: 
        - id: login-server 
          uri: lb://login-server 
          predicates: 
			- Path=/api/loginServer/**
            - Before=2023-07-14T15:47:26.761+08:00[Asia/Shanghai]
#时间是ZonedDateTime类型的时间值

晚于2023-07-14T15:47:26.761+08:00[Asia/Shanghai] 时间发送请求无法访问(图中时间因为时区需要+8小时)

image-20230714155659351

The Between Route Predicate Factory 两个时间之间
spring:
  cloud:
    gateway:
      routes: 
        - id: login-server 
          uri: lb://login-server 
          predicates: 
			- Path=/api/loginServer/**
            - Between=2023-07-14T15:47:26.761+08:00[Asia/Shanghai], 2023-07-14T16:10:26.761+08:00[Asia/Shanghai]

- Between=2023-07-14T15:47:26.761+08:00[Asia/Shanghai], 2023-07-14T16:10:26.761+08:00[Asia/Shanghai]

可以访问

- Between=2023-07-14T15:47:26.761+08:00[Asia/Shanghai], 2023-07-14T15:59:26.761+08:00[Asia/Shanghai]

无法访问

The Cookie Route Predicate Factory 包含某些cookie
spring:
  cloud:
    gateway:
      routes: 
        - id: login-server 
          uri: lb://login-server 
          predicates: 
			- Path=/api/loginServer/**
            - Cookie=name, hry

当请求中name=hry 可以访问 否则无法访问

The Header Route Predicate Factory 包含某些header
spring:
  cloud:
    gateway:
      routes: 
        - id: login-server 
          uri: lb://login-server 
          predicates: 
			- Path=/api/loginServer/**
            - Header=token, hry

当请求的请求头中有token=hry 可以访问 否则无法访问

The Host Route Predicate Factory 指定域名
spring:
  cloud:
    gateway:
      routes: 
        - id: login-server 
          uri: lb://login-server 
          predicates: 
			- Path=/api/loginServer/**
            - Host=localhost:20000, www.testhost.com:20000

测试:先给回环地址加几个本地dns域名解析

image-20230714173605983

在没有添加域名路由规则时,这两个域名都能够正常访问

添加如上域名规则后,指定的域名才能正常访问,正常访问

image-20230714175110469

image-20230714174959544

The Method Route Predicate Factory 指定请求方式
spring:
  cloud:
    gateway:
      routes: 
        - id: login-server 
          uri: lb://login-server 
          predicates: 
			- Path=/api/loginServer/**
            - Method=GET

指定请求方式的请求才被接收

The Path Route Predicate Factory 指定
spring:
  cloud:
    gateway:
      routes: 
        - id: login-server 
          uri: lb://login-server 
          predicates: 
			- Path=/api/loginServer/**

匹配路径规则的被接收

The Query Route Predicate Factory 指定请求参数名、参数值(值可以用正则表达式)
spring:
  cloud:
    gateway:
      routes: 
        - id: login-server 
          uri: lb://login-server 
          predicates: 
            - Query=green, ge[1-9] #第一个green指的时请求参数名,第二个时请求参数值

请求必须带指定参数,如果路由规则指定了值的格式,也必须符合指定的值格式。

示例为 请求需要带green参数,值为ge+[1-9]中的一个值 例 ge1 ge2 …

The RemoteAddr Route Predicate Factory 指定请求源地址
spring:
  cloud:
    gateway:
      routes: 
        - id: login-server 
          uri: lb://login-server 
          predicates: 
            - RemoteAddr=192.168.43.248/29 #网络地址和子网掩码

请求源地址在指定网段内,正常接收

示例请求源地址是192.168.43.248-192.168.43.256符合路由规则

The Weight Route Predicate Factory 根据权重
spring:
  cloud:
    gateway:
      routes:
      - id: weight_high
        uri: http://localhost:9090
        predicates:
        - Weight=group1, 8
      - id: weight_low
        uri: http://localhost:9091
        predicates:
        - Weight=group1, 2

根据权重路由,可以达到负载均衡的效果

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值