Spring Cloud Gateway 的断言(Predicates)有哪些?

Spring Cloud Gateway 的断言(Predicates)是路由匹配的核心规则,用于根据请求属性动态决策路由路径。以下是基于官方实现与社区实践的主流断言类型及其技术解析(按功能分类):


一、时间相关断言

断言类型作用配置示例
After匹配指定时间后的请求After=2025-06-12T12:00:00+08:00(UTC+8时间)
Before匹配指定时间前的请求Before=2025-12-31T23:59:59.999Z(ISO 8601格式)
Between匹配时间区间内的请求Between=2025-06-12T00:00:00,2025-06-13T00:00:00(逗号分隔起始和结束时间)

二、请求特征断言

断言类型作用配置示例
Path基于 URL 路径匹配(支持 Ant 风格表达式)Path=/api/user/**
Method匹配 HTTP 方法(GET/POST/PUT 等)Method=GET,POST(多方法用逗号分隔)
Host根据请求头 Host 匹配Host=**.example.com(支持通配符)
Query校验查询参数是否存在或匹配正则Query=name,tom(必须包含 name 参数且值为 tom)或 Query=token(存在即可)

三、客户端特征断言

断言类型作用配置示例
RemoteAddr根据客户端 IP 匹配(CIDR 格式)RemoteAddr=192.168.1.1/24
Cookie校验 Cookie 名称及正则表达式匹配Cookie=sessionId,^[a-zA-Z0-9]+$
Header校验请求头字段是否存在或值匹配正则Header=X-Request-Id,\d+(必须包含数字型 X-Request-Id 头)

四、权重与流量分发

断言类型作用配置示例
Weight按权重比例分流请求到不同服务组Weight=groupA,80(80%流量到 groupA 服务)

五、高级断言

断言类型作用配置示例
XForwardedRemoteAddr基于代理链中的原始客户端 IP 匹配XForwardedRemoteAddr=10.0.0.0/8
ReadBody根据请求体内容匹配(需配置反序列化策略)需自定义断言工厂实现复杂逻辑

六、断言组合逻辑

  • 逻辑与(AND):路由配置中多个断言并列时需同时满足
    predicates:
      - Path=/api/**
      - Method=GET
      - Header=X-Auth-Token
    
  • 逻辑或(OR):通过自定义断言工厂实现,默认不支持

七、配置方式对比

配置方式适用场景优缺点
YAML 静态配置简单规则、预定义路由易读易维护,但需重启生效
编程式动态配置需要运行时动态调整路由(如结合数据库)灵活度高,支持复杂业务逻辑,但开发成本较高

八、生产实践建议

  1. 性能敏感场景:优先使用 Path + Method 组合减少匹配复杂度
  2. 灰度发布:结合 Weight 断言逐步切量
  3. 安全校验:通过 RemoteAddr + Header 实现 IP 白名单与认证
  4. 流量染色:使用 QueryCookie 实现 A/B 测试

通过合理组合断言,可实现灵活的路由策略。源码实现可参考 RoutePredicateFactory 接口及其实现在 org.springframework.cloud.gateway.handler.predicate 包中的具体类。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值