路由断言工厂

1. 简介

        Spring Cloud Gateway 将路由匹配作为最基本的功能。而这个功能是通过路由断言工厂完成的。Spring Cloud Gateway 中包含了很多种内置的路由断言工厂。所有这些断言都可以匹配 HTTP 请求的不同属性,并且可以根据逻辑与状态,将多个路由断言工厂复合使用。

2. After 路由断言工厂

2.1 规则

        该断言工厂的参数是一个 UTC 格式的时间。其会将请求访问到 Gateway 的时间与该参数时间相比,若请求时间在参数时间之后,则匹配成功,断言为 true。

2.2 配置文件

2.3 API 式启动类

3. Before 路由断言工厂

3.1 规则

        该断言工厂的参数是一个 UTC 格式的时间。其会将请求访问到 Gateway 的时间与该参数时间相比,若请求时间在参数时间之前,则匹配成功,断言为 true。

3.2 配置文件

3.3 API 式启动类

4. Between 路由断言工厂

4.1 规则

         该断言工厂的参数是两个 UTC 格式的时间。其会将请求访问到 Gateway 的时间与这两个参数时间相比,若请求时间在这两个参数时间之间,则匹配成功,断言为 true

4.2 配置文件

4.3 API 式启动类

5. Cookie 路由断言工厂

5.1 规则

        该断言工厂中包含两个参数,分别是 cookie 的 key 与 value。当请求中携带了指定 key 与 value的 cookie 时,匹配成功,断言为 true。

5.2 配置文件

5.3 API 式启动类

5.4 运行效果

6. Header 路由断言工厂

6.1 规则

        该断言工厂中包含两个参数,分别是请求头 header 的 key 与 value。当请求中携带了指定 key与 value 的 header 时,匹配成功,断言为 true。

6.2 配置文件

6.3 API 式启动类

6.4 运行效果

        在请求中添加指定的 header,则可以成功访问到页面。若 header 的值与指定值不匹配,则无法访问到指定 URI。

7. Host 路由断言工厂

7.1 规则

        该断言工厂中包含的参数是请求头中的 Host 属性。当请求中携带了指定的 Host 属性值时,匹配成功,断言为 true

7.2 配置文件

修改 hosts 文件修

改C:\Windows\System32\drivers\etc中的hosts文件,为127.0.0.1 这个 ip指定多个主机名。
例如,在该文件中添加如下内容:

7.3 API 式启动类

7.4 运行效果

8. Method 路由断言工厂

8.1 规则

        该断言工厂用于判断请求是否使用了指定的请求方法,是 POST,还是 GET 等。当请求中使用了指定的请求方法时,匹配成功,断言为 true

8.2 配置文件

8.3 API 式启动类

8.4 运行效果

9. Path 路由断言工厂

9.1 规则

        该断言工厂用于判断请求路径中是否包含指定的 uri。若包含,则匹配成功,断言为 true,此时会将该匹配上的 uri 拼接到要转向的目标 uri 的后面,形成一个统一的 uri。

9.2 配置文件

9.3 API 式启动类

直接修改路由方法。添加了两个路由策略。

9.4 运行效果

        跳转到各自的服务的api

10. Query 路由断言工厂

10.1 规则

        该断言工厂用于从请求中查找指定的请求参数。其可以只查看参数名称,也可以同时查看参数名与参数值。当请求中包含了指定的参数名,或名值对时,匹配成功,断言为 true。

10.2 配置文件

        以上两个 Query 断言的关系是“与”,即只有请求中同时包含了 color 与 size 参数,且color 参数值必须是以 gr 开头的就可以访问到。

10.3 API 式启动类

10.4 运行效果

11. RemoteAddr 路由断言工厂

11.1 规则

        该断言工厂用于判断提交请求的客户端 IP 地址是否在断言中指定的 IP 范围或 IP 列表中。若在,匹配成功,断言为 true。

11.2 配置文件

下面的路由指定提交请求的客户端 IP 地址若是 192.168.3 网段中的 IP,则是可访问到的

11.3 API 式启动类

11.4 运行效果

由于当前浏览器提交请求的主机 IP 是 192.168.3.8,属于 192.168.3 网段,所以是可以访问到。

12. Before 路由断言工厂

12.1 规则

        该断言工厂用于实现对同一组中的不同 uri 实现指定权重的负载均衡。路由中包含两个参数,分别是用于表示组 group,与权重 weight。对于同一组中的多个 uri 地址,路由器会根据设置的权重,按比例将请求转发给相应的 uri。

12.2 配置文件

12.3 API 式启动类

12.4 运行效果

在地址栏中多次提交 localhost:9000 的请示,可以看到大多数会跳转到 taobao,但偶尔也会跳转到 jd

11. XForwardedRemoteAddr 路由断言工厂

11.1 规则

        只要当前请求头中追加入 X-Forwarded-For 的 IP 出现在路由指定的 IP 列表中,则匹配成功,断言为 true。

11.2 配置文件

11.3 API 式启动类

11.4 运行效果

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值