SpringCloud使用Gateway常用的断言(predicates)种类以及规则



基础提要:SpringCloud中的Gateway网关.

这里是我们9527网关服务的yml配置文件,可以看到是动态路由,根据断言(predicates)匹配到/testGateWay01路径的请求后,再通过服务名SPRINGCLOUD-PROVIDER-DEPT去服务注册中心负载均衡地获取到服务并访问!

spring:
  application:
    name: cloud-gateway
  cloud:
    gateway:
      discovery:
        locator:
          enabled: true       #启动动态路由,也就是说网关现在会根据服务名去找到对应的服务
      routes:
        - id: provider_routh
          uri: lb://SPRINGCLOUD-PROVIDER-DEPT   #目标微服务名!而且是以负载均衡方式去获取!
          predicates:    						#断言
            - Path=/testGateWay01

        - id: provider_routh2
          uri: lb://SPRINGCLOUD-PROVIDER-DEPT
          predicates:
            - Path=/testGateWay02

上面用的path 只是predicate 中的一个
有哪几种?
在这里插入图片描述
这里介绍一下

1.After、Before、Between 路由断言

先看配置文件!


      routes:
        - id: provider_routh
          uri: lb://SPRINGCLOUD-PROVIDER-DEPT   #目标微服务名!而且是以负载均衡方式去获取!
          predicates:    						#断言
            - Path=/testGateWay01
            - After=2021-07-04T19:16:43.338+08:00[Asia/Shanghai]

什么意思???
简单一说就知道了,就是给我们的断言有多加了一个匹配规则,除了要满足访问路径是/testGateWay01以外,还要满足当前请求的时间必须是在2021-07-04 19:16:43.338+08:00以后!也就是After某某时间以后,断言才会进行匹配!

Before、Between顾名思义也就明白了:在某某时间以前、在某两个时间之间
如果我们不在规定的时间窗口内访问,就会报错!

2.Cookie 路由断言

Cookie 断言有两个参数,一个cookie 名称和一个java 正则表达式,这个断言匹配给定的cookie 名和值正则匹配的请求。


      routes:
        - id: provider_routh
          uri: lb://SPRINGCLOUD-PROVIDER-DEPT   #目标微服务名!而且是以负载均衡方式去获取!
          predicates:    						#断言
            - Path=/testGateWay01
            - Cookie=username, ybz

白话文理解:就是一个键值对!请求的Cookie必须要有一个键值对username:ybz。满足我就给你访问,否则就给老子滚


3.Header 路由断言

Header断言有两个参数,一个参数名,一个正则。只有当有这个参数并且值匹配正则的时候才能执行下去。


      routes:
        - id: provider_routh
          uri: lb://SPRINGCLOUD-PROVIDER-DEPT   #目标微服务名!而且是以负载均衡方式去获取!
          predicates:    						#断言
            - Path=/testGateWay01
            - Header=X-Request-Id, \d+

这个路由规则匹配Header中包含X-Request-Id并且值为纯数字的请求。


4.Host 路由断言

Host 路由断言接受一个正则域名列表,正则是用英文句号分割的正则表达式。


      routes:
        - id: provider_routh
          uri: lb://SPRINGCLOUD-PROVIDER-DEPT   #目标微服务名!而且是以负载均衡方式去获取!
          predicates:    						#断言
            - Path=/testGateWay01
            - Host=**.ybz.com

这个路由规则匹配Header中必须包含**.ybz.com


5.Method 路由断言

Method路由断言匹配一个或多个Http请求方式(GET POST PUT DELETE HEAD).


      routes:
        - id: provider_routh
          uri: lb://SPRINGCLOUD-PROVIDER-DEPT   #目标微服务名!而且是以负载均衡方式去获取!
          predicates:    						#断言
            - Path=/testGateWay01
            - Method=GET,POST

这个路由匹配所有的GET POST请求。


6.Query 查询路由断言

Query路由断言有两个参数: 一个必传参数 和一个可选的正则表达式。


      routes:
        - id: provider_routh
          uri: lb://SPRINGCLOUD-PROVIDER-DEPT   #目标微服务名!而且是以负载均衡方式去获取!
          predicates:    						#断言
            - Path=/testGateWay01
            - Query=green
            - Query=red, gree.

1.如果请求中包含green的参数,则匹配成功。
2.如果一个请求中包含参数red并且值匹配·gree.·这个正则,那么路由匹配。比如:green和greet。


拓展

1.SpringCloud中的Gateway网关基础.

2.Gateway中的filter.
好了 基本已经讲完,欢迎大家评论区指出不足,一起学习进步!

大家看完了点个赞,码字不容易啊。。。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

易柏州Innovation

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值