SpringCloudGateway?自定義局部過濾器場景分析
場景:
將所有請(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)文章
Java中List集合對(duì)象去重及按屬性去重的8種方法
這篇文章主要介紹了Java中List集合對(duì)象去重及按屬性去重的8種方法,本文給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一地的參考借鑒價(jià)值,需要的朋友可以參考下2020-09-09
Spring Cache自定義緩存key和過期時(shí)間的實(shí)現(xiàn)代碼
使用 Redis的客戶端 Spring Cache時(shí),會(huì)發(fā)現(xiàn)生成 key中會(huì)多出一個(gè)冒號(hào),而且有一個(gè)空節(jié)點(diǎn)的存在,查看源碼可知,這是因?yàn)?nbsp;Spring Cache默認(rèn)生成key的策略就是通過兩個(gè)冒號(hào)來拼接,本文給大家介紹了Spring Cache自定義緩存key和過期時(shí)間的實(shí)現(xiàn),需要的朋友可以參考下2024-05-05
java.lang.NumberFormatException異常解決方案詳解
這篇文章主要介紹了java.lang.NumberFormatException異常解決方案詳解,本篇文章通過簡要的案例,講解了該項(xiàng)技術(shù)的了解與使用,以下就是詳細(xì)內(nèi)容,需要的朋友可以參考下2021-08-08
java實(shí)現(xiàn)微信支付(服務(wù)端)
這篇文章主要介紹了java實(shí)現(xiàn)微信支付,針對(duì)服務(wù)端進(jìn)行代碼編寫,感興趣的小伙伴們可以參考一下2015-12-12
Java中Bigdecimal類的toString()方法和toPlainString()方法區(qū)別
BigDecimal類有多個(gè)方法可以將其轉(zhuǎn)換為字符串,其中包括toString()和toPlainString(),本文主要介紹了Java中Bigdecimal類的toString()方法和toPlainString()方法區(qū)別,具有一定的參考價(jià)值,感興趣的可以了解一下2024-07-07

