閘道器Gateway

仙女无可奈何發表於2024-03-20

一、閘道器第一步:斷言->斷言工廠

路由斷言【Route Predicate】、斷言工廠【Route Predicate Factory】

什麼是路由斷言?

判斷一個路由斷言是否符合條件,符合則轉發到路由的目的地

我們在配置檔案中寫的斷言規則只是字串,這些字串會被斷言工廠(Route Predicate Factory)讀取並處理,轉換為路由判斷的條件

當請求到來的時候,首先交給路由斷言工廠進行處理,如果命中斷言工廠,則執行下一步,否則返回錯誤資訊

什麼是路由斷言工廠?

讀取使用者配置的斷言規則,並把它解析成判斷條件,並作出判斷

像這樣的斷言工廠在SpringCloudGateway有十幾個,每一個都有自己的判斷條件
image
用的最多的斷言工廠是Path,根據路徑進行判斷
image
image
這個的含義是對請求路徑做判斷,只要路徑的開頭是這個,就符合條件
他會根據配置檔案中的路由規則挨邊找,直到找到符合(放行)的或者沒有符合的為止(報錯404),在做相關的判斷!


二、路由中的過濾器GatewayFilter

GatewayFilter是閘道器中提供的一種過濾器,可以對閘道器的請求以及微服務的響應做處理:
image
image
具體使用哪個路由過濾工廠,到時候可以檢視微服務的原始碼查詢使用方法!配置案例如下
image
配置預設路由過濾器:對所有請求都生效!
image

全域性過濾器GlobalFilter:作用和GatewayFilter的作用一樣,處理一切進入閘道器的請求和微服務響應,但是它需要自己寫程式碼實現,不像GatewayFilter一樣直接配置就行,優點在於:處理邏輯可以根據需求調整

image

ps:交給下一個過濾器處理是一個過濾鏈

image


三、過濾器的執行順序

image
image

四、閘道器的跨域處理

跨域情況:瀏覽器禁止請求的發起者與服務端發生的ajax請求,請求被瀏覽器攔截的問題

image
image
image

相關文章