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 过滤器内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!

相关文章

  • 基于Springboot2.0构建ES的多客户端

    基于Springboot2.0构建ES的多客户端

    这篇文章主要为大家详细介绍了基于Springboot2.0构建ES的多客户端,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2019-04-04
  • springboot上传文件过大的500异常解决

    springboot上传文件过大的500异常解决

    这篇文章主要介绍了springboot上传文件过大的500异常解决,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下
    2019-09-09
  • Java中List集合对象去重及按属性去重的8种方法

    Java中List集合对象去重及按属性去重的8种方法

    这篇文章主要介绍了Java中List集合对象去重及按属性去重的8种方法,本文给大家介绍的非常详细,对大家的学习或工作具有一地的参考借鉴价值,需要的朋友可以参考下
    2020-09-09
  • 深入理解Java设计模式之迭代器模式

    深入理解Java设计模式之迭代器模式

    这篇文章主要介绍了JAVA设计模式之迭代器模式的的相关资料,文中示例代码非常详细,供大家参考和学习,感兴趣的朋友可以了解
    2021-11-11
  • 如何基于java语言实现八皇后问题

    如何基于java语言实现八皇后问题

    这篇文章主要介绍了如何基于java语言实现八皇后问题,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下
    2019-12-12
  • Spring Cache自定义缓存key和过期时间的实现代码

    Spring Cache自定义缓存key和过期时间的实现代码

    使用 Redis的客户端 Spring Cache时,会发现生成 key中会多出一个冒号,而且有一个空节点的存在,查看源码可知,这是因为 Spring Cache默认生成key的策略就是通过两个冒号来拼接,本文给大家介绍了Spring Cache自定义缓存key和过期时间的实现,需要的朋友可以参考下
    2024-05-05
  • java.lang.NumberFormatException异常解决方案详解

    java.lang.NumberFormatException异常解决方案详解

    这篇文章主要介绍了java.lang.NumberFormatException异常解决方案详解,本篇文章通过简要的案例,讲解了该项技术的了解与使用,以下就是详细内容,需要的朋友可以参考下
    2021-08-08
  • ES多条件查询写法举例

    ES多条件查询写法举例

    这篇文章主要给大家介绍了关于ES多条件查询的相关资料,Elasticsearch多条件查询是指在查询数据时,可以同时使用多个条件来筛选数据,文中通过代码介绍的非常详细,需要的朋友可以参考下
    2023-11-11
  • java实现微信支付(服务端)

    java实现微信支付(服务端)

    这篇文章主要介绍了java实现微信支付,针对服务端进行代码编写,感兴趣的小伙伴们可以参考一下
    2015-12-12
  • Java中Bigdecimal类的toString()方法和toPlainString()方法区别

    Java中Bigdecimal类的toString()方法和toPlainString()方法区别

    BigDecimal类有多个方法可以将其转换为字符串,其中包括toString()和toPlainString(),本文主要介绍了Java中Bigdecimal类的toString()方法和toPlainString()方法区别,具有一定的参考价值,感兴趣的可以了解一下
    2024-07-07

最新评论