本文旨在介绍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
示例:参数匹配方式框架
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时,才会被拦截
复制代码