美文网首页
32.Gateway内置路由断言

32.Gateway内置路由断言

作者: LANSHENGYANG | 来源:发表于2020-06-01 18:03 被阅读0次

断言

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

内置路由断言工厂

  • SpringCloud Gateway包括许多内置的断言工厂,所有这些断言都与HTTP请求的不同属性匹配。具体如下:
  • 基于Datetime类型的断言工厂
    • 此类型的断言根据时间做判断,主要有三个:
    • AfterRoutePredicateFactory:接收一个日期参数,判断请求日期是否晚于指定日期
    • BeforeRoutePredicateFactory:接收一个日期参数,判断请求日期是否早于指定日期
    • BetweenRoutePredicateFactory:接收两个日期参数,判断请求日期是否在指定时间段内

    -After=2019-12-31T23:59:59.789+08:00[Asia/Shanghai]

  • 基于远程地址的断言工厂
    • RemoteAddrRoutePredicateFactory:接收一个IP地址段,判断请求主机地址是否在地址段中

    -RemoteAddr=192.168.1.1/24

  • 基于Cookie的断言工厂
    • CookieRoutePredicateFactory:接收两个参数,cookie名字和一个正则表达式。判断请求cookie是否具有给定名称且值与正则表达式匹配。

    -Cookie=chocolate, ch.

  • 基于Header的断言工厂
    • HeaderRoutePredicateFactory:接收两个参数,标题名称和正则表达式。判断请求Header是否具有给定名称且与正则表达式匹配。

    -Header=X-Request-Id, \d+

  • 基于Host的断言工厂
    • HostRoutePredicateFactory:接收一个参数,主机名模式。判断请求的Host是否满足匹配规则。

    -Host=** .testhost.org

  • 基于Method请求方法的断言工厂
    • MethodRoutePredicateFactory:接收一个参数,判断请求类型是否跟指定的类型匹配。

    -Method=GET

  • 基于Path请求路径的断言工厂
    • PathRoutePredicateFactory:接收一个参数,判断请求的URI部分是否满足路径规则。

    -Path=/foo/{segment}

  • 基于Query请求参数的断言工厂
    • QueryRoutePredicateFactory:接收两个参数,请求param和正则表达式,判断请求参数是否具体有给定名称且值与正则表达式匹配。

    -Query=baz,ba

内置断言工厂的使用

  • 接下来我们验证几个内置断言的使用:
server:
  port: 7000
spring:
  application:
    name: api-gateway
  cloud:
    gateway:
      routes: # 路由数组[]
        - id: product_route # 当前路由的标识,要求唯一,默认是UUID
          uri: http://localhost:8081 # 请求最终要转发的地址
          order: 1 # 路由的优先级,数字越小代表路由的优先级越高
          predicates:  #断言(条件判断,返回值是Boolean,转发请求要求满足的条件)
            - Path=/product-serv/** # 当请求路径满足path指定的规则时,此路由信息才会正常转发
            - Before=2020-4-26T00:00:00.000+08:00 #限制请求时间在2019-11-28之前
            - Method=GET #限制请求方式为POST
          filters: # 过滤器(在请求传递过程中 对请求做一些手脚)
            - StripPrefix=1 # 在请求转发之前去掉一层路径

相关文章

网友评论

      本文标题:32.Gateway内置路由断言

      本文链接:https://www.haomeiwen.com/subject/nmbszhtx.html