spring cloud gateway 2 深入了解 - Predicate

Predicate 路径谓词

Path谓词
spring:
  cloud:
    gateway:
      routes:
        # 匹配指定路径的路由
      - id: path_route
        uri: http://www.baidu.com
        predicates:
        - Path=/baidu/**
        filters:
        - StripPrefix=1
  • Path谓词配置的- Path=/baidu/**的作用是:匹配所有请求路径以http://localhost:8888/baidu开头的用户请求
  • 请求http://localhost:8888/baidu,返回百度网页的HTML
cookie谓词
spring:
  cloud:
    gateway:
      routes:
        # 匹配指定cookie的路由
      - id: cookie_route
        uri: http://www.taobao.com
        predicates:
        - Cookie=chocolate, value
  • Cookie谓词配置的- Cookie=chocolate, value的作用是:匹配请求中存在cookiechocolate=value的所有请求
    注意:- Cookie=chocolate, value中的value是正则表达式
  • 请求一个url http://localhost:8888/1111111,只要存在cookiechocolate=value,都网关都会匹配到对应路由,最后返回淘宝的HTML
Header谓词
spring:
  cloud:
    gateway:
      routes:
        # 匹配指定请求头的路由
      - id: header_route
        uri: http://www.jd.com/
        predicates:
        - Header=X-Request-Id, \d+
  • Header谓词配置的- Header=X-Request-Id, \d+的作用是:匹配请求头中存在符合条件“key为X-Request-Id,value为数字”的所有请求
    注意:Header=X-Request-Id, \d+,第二个参数是正则表达式,如\d+
  • 请求一个urlhttp://localhost:8888/2222222,只要请求头中符合key为X-Request-Id,value为数字,都网关都会匹配到对应路由,最后返回京东的HTML
Query谓词
spring:
  cloud:
    gateway:
      routes:
        # 匹配指定请求参数的路由
      - id: cookie_route
        uri: http://tmall.com/
        predicates:
        - Query=param1,value
  • 上面请求参数谓词- Query=param1,value的含义是: 匹配所有含有请求参数param1且它的值符合正则表达式value的请求
    注意:- Query=param1,value中的value是正则表达式
    注意:- Query=param1,value中的value可以省略
  • 即可变成- Query=param1,这是匹配所有请求参数含有param1的请求并且不筛选值
Host谓词
spring:
  cloud:
    gateway:
      routes:
      - id: host_route
        uri: http://example.org
        predicates:
        - Host=**.somehost.org
  • host谓词匹配对应的host,如下匹配www.somehost.orgbeta.somehost.org
Method谓词
spring:
  cloud:
    gateway:
      routes:
      - id: method_route
        uri: http://example.org
        predicates:
        - Method=GET
  • Method方法谓词匹配如getpost等请求的方法
RemoteAddr谓词
spring:
  cloud:
    gateway:
      routes:
      - id: remoteaddr_route
        uri: http://example.org
        predicates:
        - RemoteAddr=192.168.1.1/24
  • RemoteAddrip地址谓词,匹配对应ip地址
AfterBeforeBetween等时间谓词,分别匹配在某时之后,之前,和某段时间内的请求

谓词组合

spring:
  cloud:
    gateway:
      routes:
        # 匹配指定请求参数和请求头的路由
      - id: compose_route
        uri: http://www.oschina.net/
        predicates:
        - Query=param2
        - Header=Header-Route,value
  • 不同谓词之间可以组合使用。它们同时存在于同一个路由时,请求必须同时满足所有的谓词条件才被这个路由匹配。
    注意:一个请求满足多个路由的谓词条件时,请求只会被首个成功匹配的路由转发

项目推荐



DC3是基于Spring Cloud的开源可分布式物联网(IOT)平台,用于快速开发、部署物联设备接入项目,是一整套物联系统解决方案。

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值