Spring Cloud(2020.0.3) | 从入门到入土 - 20. Gateway 断言工厂(下)

九、Method 路由断言规则

Method 路由断言规则:这个 Method 是匹配的请求时的方式,POST、GET 等,该模式同样是支持数组,可以有一个或者多个参数

参数:参数相对固定,POST、GET、PUT、这些都是常见的。

gateway application.yml

spring:
  cloud:
    gateway:
      routes:
      - id: method_route
        uri: http://localhost:3000/
        predicates:
        - Method=PUT,POST

配置文件中,我们是增加了两种请求方式,一个是 PUT,一个是 POST,唯独没有 GET,我们来请求一下接口。

很明显是不行的,因为我们方法定义的是 GET 请求,而我们路由匹配中是没有 GET 匹配,所以说这里会 404。

十、Path 路由断言规则

Path 路由断言规则:该规则很简单,就是匹配我们的路径是不是符合条件。

参数:Path 路径数组

gateway application.yml

spring:
  cloud:
    gateway:
      routes:
      - id: path_route
        uri: http://localhost:3000/
        predicates:
        - Path=/normal/**

Path 路由匹配只匹配域名后紧跟着的内容,将网关域名替换成 gateway 中的 uri,其他的并不能够进行替换,后期我们会讲述到 Gateway 过滤工厂,通过过滤工厂可以进行路径重写。

十一、Query 路由断言规则

Query 路由断言规则:获取请求路径中是否带有具体参数的请求。但是这个断言规则有两种,一个是只匹配 key,还有一个是匹配 key 与 value。

只匹配 key

gateway application.yml

spring:
  cloud:
    gateway:
      routes:
      - id: query_route
        uri: http://localhost:3000/
        predicates:
        - Query=green

只要我们请求的 url 中带有 green 的参数,就可以匹配到,不管 green 的值具体是什么,那怕是空也可以。

 

可以对比左右两个图,左面的是正确的,我们使用的 green,右面是错误的,使用的是 gre。

匹配 key & value

gateway application.yml

spring:
  cloud:
    gateway:
      routes:
      - id: query_route
        uri: http://localhost:3000/
        predicates:
        - Query=red, gree.

这个匹配规则是,key 一定要为 red,value 值是可以使用正则表达式,gree. 的意思是 gree 后面再跟一个字母。

 

可以看到,不管是 green 还是 greeq 都可以。

 

但是当正则匹配不上,或者是没有填写,是没有办法进行匹配的。

十二、RemoteAddr 路由断言规则

RemoteAddr 路由断言规则:只有请求的远程地址为 Gateway 中配置的地址,才可以进行请求。

参数:ip 地址 + 网络号的数组

gateway application.yml

spring:
  cloud:
    gateway:
      routes:
      - id: remoteaddr_route
        uri: http://localhost:3000/
        predicates:
        - RemoteAddr=192.168.100.1/24

这个 ip 地址,我们一般用的是网关,后面的 /24 指的是网络号。这个配置按照自己的网络环境进行配置,别直接复制我的。

这个指的是只有符合我们的网络号才可以进行请求,类似这个 RemoteAddr 路由断言模式,可以用于互联网上的公司内部系统请求。

重新启动 Gateway,我们用之前的 localhost 进行请求。

可以看到,当前请求是 404了。接着我们再换成 127.0.0.1 试试。

同样啊,和上面用 localhost 请求一样,都是 404。最后我们使用本地的 ip 地址进行请求。

我们不难发现,用本地 ip 地址进行访问就是可以的。

十三、Weight 路由断言规则

Weight 路由断言规则:该断言规则是根据我们配置的 group 和 weight 进行计算后,进行路由的,weight 越大,那请求过去的几率也就越大。

参数:group 和 weight,group 是用来识别是否为同一个服务,weight(一般为数字)用来表示权重。

gateway application.yml

spring:
  cloud:
    gateway:
      routes:
      - id: weight_high
        uri: http://localhost:3000/
        predicates:
        - Weight=group1, 8
      - id: weight_low
        uri: http://localhost:3001/
        predicates:
        - Weight=group1, 2

这里想要测试这个,需要我们再去弄一个相同的服务~~~

这个自己去创建一下(端口不同,其他的都一样),一会为了方便测试,我们还需要修改一下这两个的服务。

重新启动两个服务,以及 Gateway 网关。

点了十几次,大部分都是由 3000 提供的服务,3001 偶尔会出现一两次。


这一讲就讲到这里,有问题可以联系我:QQ 2100363119,欢迎大家访问我的个人网站:https://www.lemon1234.com

最近网站已经做好,并且已经上线,欢迎各位留言~~

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

他 他 = new 他()

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

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

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

打赏作者

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

抵扣说明:

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

余额充值