Gateway路由谓词工厂(断言)详解

本文来详细说下Gateway路由谓词工厂


常用术语

常用术语说明

  • 路由:网关的基本模块,它由ID、目标URI、谓词集合和过滤器集合定义。如果聚合谓词为true,则匹配路由。
  • 谓词: 匹配Http请求参数的规则
  • 过滤器:对下游的服务器之前和之后实现处理,使用责任链模式。

在这里插入图片描述

Predicate(断言,谓词)用于进行条件判断,只有断言都返回真,才会真正的执行路由。断言就是说:在什么条件下才能进行路由转发


它是如何工作的

下图提供了 Spring Cloud Gateway 如何工作的高级概述:

在没有端口的路由中定义的 URI 分别获得 HTTP 和 HTTPS URI 的默认端口值 80 和 443

在这里插入图片描述

客户端向 Spring Cloud Gateway 发出请求。如果网关处理程序映射确定请求与路由匹配,则将其发送到网关 Web 处理程序。此处理程序通过特定于请求的过滤器链运行请求。过滤器用虚线划分的原因是过滤器可以在发送代理请求之前和之后运行逻辑。执行所有“预”过滤器逻辑。然后发出代理请求。发出代理请求后,将运行“发布”过滤器逻辑


配置路由谓词工厂

有两种配置谓词和过滤器的方法:快捷方式和完全扩展的参数。下面的大多数示例都使用快捷方式。名称和参数名称将code在每个部分的第一句或第二句中列出。参数通常按快捷方式配置所需的顺序列出。


快捷方式配置

快捷方式配置由过滤器名称识别,后跟等号 ( =),后跟以逗号 ( ,) 分隔的参数值。

应用程序.yml

spring:
  cloud:
    gateway:
      routes:
      - id: after_route
        uri: https://example.org
        predicates:
        - Cookie=mycookie,mycookievalue

前面的示例Cookie使用两个参数定义了路由谓词工厂,cookie 名称mycookie和要匹配的值mycookievalue。


完全扩展的参数

完全扩展的参数看起来更像是带有名称/值对的标准 yaml 配置。通常,会有一把name钥匙和一把args钥匙。键是用于配置谓词或过滤器的args键值对映射。

应用程序.yml

spring:
  cloud:
    gateway:
      routes:
      - id: after_route
        uri: https://example.org
        predicates:
        - name: Cookie
          args:
            name: mycookie
            regexp: mycookievalue

Cookie这是上面显示的谓词的快捷配置的完整配置。


路由谓词工厂

路由谓词工厂:Spring Cloud Gateway 将路由匹配为 Spring WebFluxHandlerMapping基础架构的一部分。Spring Cloud Gateway 包含许多内置的路由谓词工厂。所有这些谓词都匹配 HTTP 请求的不同属性。您可以将多个路由谓词工厂与逻辑and语句结合起来。

通俗描述请求匹配机制(触发路由条件)即符合Predicate的条件,就使用该路由的配置,否则对请求不做任何处理

在这里插入图片描述


本文小结

本文介绍了Gateway路由谓词工厂相关的概念,下文介绍gateway路由谓词实例。

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值