本文旨在介紹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時,纔會被攔截
複製代碼