九、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
最近网站已经做好,并且已经上线,欢迎各位留言~~