自定義指定路由上的Gateway過濾器工廠詳解
更新時間:2023年09月13日 08:45:41 作者:雪峰.貴
這篇文章主要介紹了自定義指定路由上的Gateway過濾器工廠詳解,gateway是Spring?Cloud中的一個網(wǎng)關(guān)服務,gateway可以使用服務注冊中心進行服務發(fā)現(xiàn)和負載均衡,同時還可以配置斷言來判斷請求是否符合路由規(guī)則,需要的朋友可以參考下
前言
核心API

一、需求
攔截請求,打印日志
1.加依賴
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-starter-gateway</artifactId>
</dependency>2.創(chuàng)建自定義過濾器 工廠
import lombok.extern.slf4j.Slf4j;
import org.springframework.cloud.gateway.filter.GatewayFilter;
import org.springframework.cloud.gateway.filter.factory.AbstractNameValueGatewayFilterFactory;
import org.springframework.http.server.reactive.ServerHttpRequest;
import org.springframework.stereotype.Component;
import org.springframework.web.server.ServerWebExchange;
@Slf4j
@Component
//自定義過濾器工廠的名字要以GatewayFilterFactory結(jié)尾,只需在前面加個前綴,并把前綴配到配置文件里
public class PreLogGatewayFilterFactory extends AbstractNameValueGatewayFilterFactory {
@Override
public GatewayFilter apply(NameValueConfig config) {
return ((exchange, chain) -> {
//配置上寫的參數(shù)用config.getName(),config.getValue()來拿
//config.getName()拿到的是a,config.getValue()拿到的是b
log.info("請求進來了,參數(shù):{},{}",config.getName(),config.getValue());
//Request.mutate后可以修改請求,需改后build()
ServerHttpRequest modifiedRequest = exchange.getRequest().mutate().build();
//把修改后的Request給Exchange
ServerWebExchange modifiedExchange = exchange.mutate().request(modifiedRequest).build();
//繼續(xù)下一個過濾器
return chain.filter(modifiedExchange);
});
}
}3.加配置
spring:
application:
name: gateway
cloud:
nacos:
discovery:
server-addr: localhost:8848
gateway:
discovery:
locator:
enabled: true #讓gateway在nacos上找微服務
routes:
- id: before_route
uri: lb://user-center #lb :nacos上的微服務
predicates:
- MyTimeBetween=上午9:00,下午11:00 #指定一個路由規(guī)則,這里的MyTimeBetween是自定義的,可以使用spring-cloud-gateway自帶的。
filters:
- PreLog=a,b #寫前綴即可,后面是傳給工廠的參數(shù)4.驗證
通過gateway訪問微服務,前提是請求路徑需要滿足routes的謂詞,才會走到這個工廠里。
http://localhost:8040/users/1
到此這篇關(guān)于自定義指定路由上的Gateway過濾器工廠詳解的文章就介紹到這了,更多相關(guān)Gateway過濾器工廠內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
解決SpringBoot應用啟動失敗:UnsatisfiedDependencyException與NoSuchBean
在Spring?Boot開發(fā)過程中,啟動應用時可能會遇到各種錯誤,其中最常見的就是UnsatisfiedDependencyException和NoSuchBeanDefinitionException,下面我們來看看該如何解決呢2025-06-06
Java實現(xiàn)讀取鍵盤輸入保存到txt文件,再統(tǒng)計并輸出每個單詞出現(xiàn)次數(shù)的方法
這篇文章主要介紹了Java實現(xiàn)讀取鍵盤輸入保存到txt文件,再統(tǒng)計并輸出每個單詞出現(xiàn)次數(shù)的方法,涉及java文件I/O操作及字符串遍歷、運算實現(xiàn)統(tǒng)計功能相關(guān)技巧,需要的朋友可以參考下2017-07-07
springboot整合JPA訪問Mysql的實現(xiàn)方法
本文主要介紹了springboot整合JPA訪問Mysql的實現(xiàn)方法,文中通過示例代碼介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們可以參考一下2022-02-02

