过滤器及断言工厂
斷言工廠
Spring Cloud Gateway包含許多內(nèi)置的Route Predicate工廠。所有這些斷言都匹配HTTP請(qǐng)求的不同屬性。多路由斷言工廠通過(guò)and組合。
官方提供的路由工廠:
這些斷言工廠的配置方式,參照官方文檔:https://cloud.spring.io/spring-cloud-static/spring-cloud-gateway/2.1.0.RELEASE/single/spring-cloud-gateway.html
這里重點(diǎn)掌握請(qǐng)求路徑路由斷言的配置方式:
spring:cloud:gateway:routes:- id: host_routeuri: http://example.orgpredicates:- Path=/foo/{segment},/bar/{segment}這個(gè)路由匹配以/foo或者/bar開(kāi)頭的路徑,轉(zhuǎn)發(fā)到http:example.org。例如 /foo/1 or /foo/bar or /bar/baz.
濾器工廠
路由過(guò)濾器允許以某種方式修改傳入的HTTP請(qǐng)求或傳出的HTTP響應(yīng)。路徑過(guò)濾器的范圍限定為特定路由。Spring Cloud Gateway包含許多內(nèi)置的GatewayFilter工廠。
這些過(guò)濾器工廠的配置方式,同樣參照官方文檔:https://cloud.spring.io/spring-cloud-static/spring-cloud-gateway/2.1.0.RELEASE/single/spring-cloud-gateway.html
過(guò)濾器 有 20 多個(gè) 實(shí)現(xiàn)類,根據(jù)過(guò)濾器工廠的用途來(lái)劃分,可以分為以下幾種:Header、Parameter、Path、Body、Status、Session、Redirect、Retry、RateLimiter和Hystrix
這里重點(diǎn)掌握PrefixPath GatewayFilter Factory
上面的配置中,所有的/foo/**開(kāi)始的路徑都會(huì)命中配置的router,并執(zhí)行過(guò)濾器的邏輯,在本案例中配置了RewritePath過(guò)濾器工廠,此工廠將/foo/(?.*)重寫(xiě)為{segment},然后轉(zhuǎn)發(fā)到http://example.org。比如在網(wǎng)頁(yè)上請(qǐng)求localhost:8090/foo/forezp,此時(shí)會(huì)將請(qǐng)求轉(zhuǎn)發(fā)到http://example.org/forezp的頁(yè)面
?
? 在開(kāi)發(fā)中由于所有微服務(wù)的訪問(wèn)都要經(jīng)過(guò)網(wǎng)關(guān),為了區(qū)分不同的微服務(wù),通常會(huì)在路徑前加上一個(gè)標(biāo)識(shí),例如:訪問(wèn)服務(wù)提供方:http://localhost:8090/provider/hello ;訪問(wèn)服務(wù)消費(fèi)方:http://localhost:8090/consumer/hi 如果不重寫(xiě)地址,直接轉(zhuǎn)發(fā)的話,轉(zhuǎn)發(fā)后的路徑為:http://localhost:8070/provider/hello和http://localhost:8080/consumer/hi明顯多了一個(gè)provider或者consumer,導(dǎo)致轉(zhuǎn)發(fā)失敗。
這時(shí),我們就用上了路徑重寫(xiě),配置如下:
server:port: 8090 spring:cloud:gateway:routes:- id: nacos-consumeruri: http://127.0.0.1:8080predicates:- Path=/consumer/**filters:- RewritePath=/consumer/(?<segment>.*),/$\{segment}- id: nacos-provideruri: http://127.0.0.1:8070predicates:- Path=/provider/**filters:- RewritePath=/provider/(?<segment>.*),/$\{segment}注意:Path=/consumer/**及Path=/provider/**的變化
測(cè)試:
?
總結(jié)
- 上一篇: gateway网关配置入门
- 下一篇: 回顾多线程