Spring Cloud Gateway基礎知識

2022-02-14 09:22:53 字數 3292 閱讀 6133

路由(route)是構建閘道器的基本模組,它由id,目標uri,一系列斷言和過濾器組成,如果斷言為true則匹配該路由。

斷言(predicate),開發人員可以匹配http請求中的所有內容,例如請求頭或請求引數,如果請求與斷言相匹配則進行路由

過濾(filter),指的是spring框架中的gatewayfilter的例項,使用過濾器,可以在請求被路由前或者後對請求進行修改

官網截圖:

核心邏輯:路由**+執行過濾器鏈

pom依賴:需要移除springboot的web場景啟動器,否則會報錯,無法啟動

org.springframework.cloud

spring-cloud-starter-gateway

配置檔案yml,在配置檔案中配置了閘道器

#是否將自己註冊到eureka server 預設為true

register-with-eureka: true

#是否從eurekaserver抓取已有的註冊資訊,預設為true,單節點無所謂,集群必須設定true才能配合ribbon做負載均衡

fetch-registry: true

service-url:

#設定eureka server互動的位址查詢服務和註冊服務都需要依賴這個位址

然後我們通過9527埠就可以訪問服務了:

新寫乙個gateway配置類:

@configuration

public class gatewayconfig ).build();

return routes.build();}}

我們在瀏覽器輸入localhost:9527/guonei並訪問,觀察效果:

yml配置

需要注意的是:uri的協議為lb,表示啟用gateway的負載均衡功能.

lb://servername是spring cloud gateway在微服務中自動為我們建立的負載均衡uri

#開啟從註冊中心動態建立路由的功能,利用微服務名進行路由

enabled: true

當我們啟動gateway服務時,發現控制台列印了一串predicate

官方文件有詳細說明:

這裡不做過多介紹。

filter分為兩種,乙個是gatewayfilter,一種是globalfilter。

沒啥好說的,官網寫的很清楚。

舉例:

spring:

#過濾器工廠會在匹配的請求頭上加上一對請求頭,名稱為x-request-red值是blue

- addrequestheader=x-request-red, blue

需要實現兩個介面,globalfilter和ordered。

@slf4j

@component

public class myglobalfilter implements globalfilter, ordered

return chain.filter(exchange);

}@override

public int getorder()

}

執行效果:

springcloud gateway解決跨域問題

方式一 if request method options if request method post if request method get 方式二 未加if判斷 add header access control allow origin add header access control...

Spring Cloud Gateway 配置資訊

了解gateway的配置才可以理解使用gateway可以做什麼事情,才能更好地應用在產品開發中。predicates主要起的作用是 配置路由匹配請求的規則 http 相關 path 配置對於請求路徑的匹配規則 yml配置,多個引數用逗號隔開 path aa bb json配置 cookie 配置對c...

spring cloud Gateway簡單使用

2年前有幸使用過一次spring cloud 1.5.9 1.整合的是zuul做閘道器,沒有使用gateway做閘道器,一直是個小遺憾。終於在2年後的19年底再次使用spring cloud,這次果斷使用spring cloud 全家桶。閘道器就是原生的spring cloud gateway 專案...