SpringCloudGateway 自定义局部过滤器场景分析
更新时间:2025年06月10日 10:20:24 作者:sszdzq海怪
这篇文章主要介绍了SpringCloudGateway 自定义局部过滤器场景分析,本文通过实例代码给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友参考下吧
场景:
将所有请求转化为同一路径请求(方便穿网配置)在请求头内标识原来路径,然后在将请求分发给不同服务

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结尾否则会出现不识别 的情况
2.配置的filters -name 的值为类的前缀(截取GatewayFilterFactory之后的)
到此这篇关于SpringCloudGateway 自定义局部过滤器的文章就介绍到这了,更多相关SpringCloudGateway 过滤器内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!
相关文章
Spring Cache自定义缓存key和过期时间的实现代码
使用 Redis的客户端 Spring Cache时,会发现生成 key中会多出一个冒号,而且有一个空节点的存在,查看源码可知,这是因为 Spring Cache默认生成key的策略就是通过两个冒号来拼接,本文给大家介绍了Spring Cache自定义缓存key和过期时间的实现,需要的朋友可以参考下2024-05-05
java.lang.NumberFormatException异常解决方案详解
这篇文章主要介绍了java.lang.NumberFormatException异常解决方案详解,本篇文章通过简要的案例,讲解了该项技术的了解与使用,以下就是详细内容,需要的朋友可以参考下2021-08-08
Java中Bigdecimal类的toString()方法和toPlainString()方法区别
BigDecimal类有多个方法可以将其转换为字符串,其中包括toString()和toPlainString(),本文主要介绍了Java中Bigdecimal类的toString()方法和toPlainString()方法区别,具有一定的参考价值,感兴趣的可以了解一下2024-07-07


最新评论