Spring Cloud Gateway 路由转发之After(Before)路由断言工厂使用

前言


本文旨在介绍After(Before)路由断言工厂使用,以此类推可使用其余路由断言工厂java

案例


一、概念web

网关简单的说就是提供一个对外统一的API入口和出口,统管企业对外的全部API出口。通常来讲,网关对外暴露的URL或者接口信息,
咱们统称之为路由信息。若是研发过网关中间件,或者使用或了解过ZUUL的,网关的核心确定是Filter以及FilterChain(Filter责任链)。
Spring Cloud Gateway也具备路由信息和Filter。下面介绍一下Spring Cloud gateway中最重要的几个概念
                                                                                    ---引用自http://xujin.org/sc/gw/gw04/
复制代码
路由(route):路由是网关最基础的部分,路由信息由一个ID、一个目的url、一组断言工厂和一组Filter组成。若是路由断言工厂为真,则说明请求的Url和配置的路由匹配。
复制代码
断言(Predicate): java 8中的断言函数。Spring Cloud Gateway中的断言函数输入类型是Spring 5.0框架中的ServerWebExchange。Spring Cloud Gateway中的断言函数容许开发者去定义匹配来自于http request中的任何信息,好比请求头和参数等。
复制代码
过滤器(filter):一个标准的Spring webFilter。Spring Cloud Gateway中的Filter分为两种类型的Filter,分别是Gateway Filter和Global Filter.网关 Filter实例是由Spring 框架中的网关Filter的特殊工厂构造。request在转发到目前服务以前,response在返回到调用端以前均可以被修改或者自定义。
复制代码

二、什么是After(Before)路由断言?
Before路由断言工厂带有一个UTC时间格式的时间参数,当请求进来的当前时间在路由断言工厂以前会成功匹配,不然不能成功匹配。
After路由断言工厂带有一个UTC时间格式的时间参数,当请求进来的当前时间在路由断言工厂以后会成功匹配,不然不能成功匹配。spring

三、案例
Spring Cloud Gateway 路由转发案例基础上修改application.yml文件中断言配置bash

server:
  port: 9001
spring:
  application:
    name: service-agateway
  cloud:
    nacos:
      discovery:
        server-addr: 127.0.0.1:8848
    #将此服务设置为网关
    gateway:
      discovery:
        locator:
          enabled: true
      routes:
      #路由名称
      - id: consumer_route
      #跳转路由
        uri: http://www.scnunanshen.online/
      #断言,设置拦截条件
        predicates:
        - After=2018-03-18T17:32:58.129+08:00[Asia/Shanghai]        

#此处为After断言工厂,表示在该时间以后的请求都将跳转到uri
复制代码

四、其余断言工厂app

  • 经过Cookie信息配置
  • 经过Header属性匹配
  • 经过Host主机匹配
  • 经过请求方式匹配
  • 经过请求参数匹配
  • 以上方式组合使用

示例:参数匹配方式框架

server:
  port: 9001
spring:
  application:
    name: service-agateway
  cloud:
    nacos:
      discovery:
        server-addr: 127.0.0.1:8848
    #将此服务设置为网关
    gateway:
      discovery:
        locator:
          enabled: true
      routes:
      #路由名称
      - id: consumer_route
      #跳转路由
        uri: http://www.scnunanshen.online/
      #断言,设置拦截条件
        predicates:
        - Query=nan

#此处表示设置当访问url中存在nan属性时,路由才会匹配
#http://localhost:9001/aa?nan=1访问 ,断言为真路由匹配。

#也能够同时设置属性跟值如:- Query=nan,2
#当路由匹配nan=2时,才会被拦截
复制代码
相关文章
相关标签/搜索