SpringCloudGateway?自定義局部過濾器場(chǎng)景分析
場(chǎng)景:
將所有請(qǐng)求轉(zhuǎn)化為同一路徑請(qǐng)求(方便穿網(wǎng)配置)在請(qǐng)求頭內(nèi)標(biāo)識(shí)原來路徑,然后在將請(qǐng)求分發(fā)給不同服務(wù)
AllToOneGatewayFilterFactory
import lombok.Getter; import lombok.Setter; import lombok.extern.slf4j.Slf4j; import org.springframework.cloud.gateway.filter.GatewayFilter; import org.springframework.cloud.gateway.filter.factory.AbstractGatewayFilterFactory; import org.springframework.http.server.reactive.ServerHttpRequest; import org.springframework.stereotype.Component; @Component @Slf4j public class AllToOneGatewayFilterFactory extends AbstractGatewayFilterFactory<AllToOneGatewayFilterFactory.Config> { public AllToOneGatewayFilterFactory() { super(Config.class); } @Override public GatewayFilter apply(Config config) { return (exchange, chain) -> { ServerHttpRequest request = exchange.getRequest(); request.getURI(); // 替換路徑 String path = request.getPath().toString(); ServerHttpRequest modifiedRequest = request.mutate().header(config.headerName, path).path(config.getToPath()).build(); exchange = exchange.mutate().request(modifiedRequest).build(); log.info("AllToOne: headers{{}:{}}, {} ---> {}", config.getHeaderName(),path, request.getURI(), modifiedRequest.getURI()); return chain.filter(exchange); }; } @Setter @Getter public static class Config { private String headerName; private String toPath; } }
spring: cloud: gateway: httpclient: ssl: useInsecureTrustManager: true routes: - id: AllToOne_fnpt uri: http://localhost:19982 predicates: - Path=/** filters: - name: AllToOne args: headerName: api-path toPath: /api/unified
注意:1.類名必須以GatewayFilterFactory結(jié)尾否則會(huì)出現(xiàn)不識(shí)別 的情況
2.配置的filters -name 的值為類的前綴(截取GatewayFilterFactory之后的)
到此這篇關(guān)于SpringCloudGateway 自定義局部過濾器的文章就介紹到這了,更多相關(guān)SpringCloudGateway 過濾器內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
spring boot項(xiàng)目同時(shí)傳遞參數(shù)和文件的多種方式代碼演示
這篇文章主要介紹了spring boot項(xiàng)目同時(shí)傳遞參數(shù)和文件的多種方式,在開發(fā)接口中,遇到了需要同時(shí)接收參數(shù)和文件的情況,可以有多種方式實(shí)現(xiàn)文件+參數(shù)的接收,這里基于spring boot 3 + vue 3 + axios,做一個(gè)簡(jiǎn)單的代碼演示,需要的朋友可以參考下2023-06-06Java畢業(yè)設(shè)計(jì)實(shí)戰(zhàn)之財(cái)務(wù)預(yù)算管理系統(tǒng)的實(shí)現(xiàn)
這是一個(gè)使用了java+SSM+Jsp+Mysql+Layui+Maven開發(fā)的財(cái)務(wù)預(yù)算管理系統(tǒng),是一個(gè)畢業(yè)設(shè)計(jì)的實(shí)戰(zhàn)練習(xí),具有財(cái)務(wù)預(yù)算管理該有的所有功能,感興趣的朋友快來看看吧2022-02-02MyBatis Plus Mapper CRUD接口測(cè)試方式
在數(shù)據(jù)庫管理系統(tǒng)中,插入記錄是添加新數(shù)據(jù)條目,而刪除操作包括根據(jù)主鍵ID單條刪除和批量刪除,也可以基于特定條件進(jìn)行刪除,刪除操作的SQL語句是通過鍵值對(duì)在Map中拼接而成,如delete from 表 where key1=value1 AND key2=value22024-09-09java 開發(fā)中網(wǎng)絡(luò)編程之IP、URL詳解及實(shí)例代碼
這篇文章主要介紹了java 開發(fā)中網(wǎng)絡(luò)編程之IP、URL詳解及實(shí)例代碼的相關(guān)資料,需要的朋友可以參考下2017-03-03java數(shù)據(jù)庫開發(fā)之JDBC基礎(chǔ)使用方法及實(shí)例詳解
這篇文章主要介紹了java數(shù)據(jù)庫開發(fā)之JDBC基礎(chǔ)知識(shí)詳解,需要的朋友可以參考下2020-02-02解決@Async(“taskExecutor“)異步線程報(bào)錯(cuò)問題
這篇文章主要介紹了解決@Async(“taskExecutor“)異步線程報(bào)錯(cuò)問題,具有很好的參考價(jià)值,希望對(duì)大家有所幫助,如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2024-08-08