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 boot项目同时传递参数和文件的多种方式代码演示

    spring boot项目同时传递参数和文件的多种方式代码演示

    这篇文章主要介绍了spring boot项目同时传递参数和文件的多种方式,在开发接口中,遇到了需要同时接收参数和文件的情况,可以有多种方式实现文件+参数的接收,这里基于spring boot 3 + vue 3 + axios,做一个简单的代码演示,需要的朋友可以参考下
    2023-06-06
  • Java迭代器遍历list的方法及代码分析

    Java迭代器遍历list的方法及代码分析

    在本篇内容里系小编给大家分享的是一篇关于Java迭代器遍历list的方法总结内容,有需要的朋友们可以参考学习下。
    2022-11-11
  • 深入浅出讲解Java比较器及数学常用类

    深入浅出讲解Java比较器及数学常用类

    这篇文章主要介绍了深入浅出讲解Java比较器及数学常用类,本文给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下
    2021-09-09
  • Java毕业设计实战之财务预算管理系统的实现

    Java毕业设计实战之财务预算管理系统的实现

    这是一个使用了java+SSM+Jsp+Mysql+Layui+Maven开发的财务预算管理系统,是一个毕业设计的实战练习,具有财务预算管理该有的所有功能,感兴趣的朋友快来看看吧
    2022-02-02
  • MyBatis Plus Mapper CRUD接口测试方式

    MyBatis Plus Mapper CRUD接口测试方式

    在数据库管理系统中,插入记录是添加新数据条目,而删除操作包括根据主键ID单条删除和批量删除,也可以基于特定条件进行删除,删除操作的SQL语句是通过键值对在Map中拼接而成,如delete from 表 where key1=value1 AND key2=value2
    2024-09-09
  • Java中LinkedHashSet的源码分析

    Java中LinkedHashSet的源码分析

    这篇文章主要介绍了Java中LinkedHashSet的源码分析,LinkedHashSet 是 Java 中的一个集合类,它是 HashSet 的子类,同时也实现了 Set 接口,与 HashSet 不同的是,LinkedHashSet 保留了元素插入的顺序,并且具有 HashSet 的快速查找特性,需要的朋友可以参考下
    2023-09-09
  • java 开发中网络编程之IP、URL详解及实例代码

    java 开发中网络编程之IP、URL详解及实例代码

    这篇文章主要介绍了java 开发中网络编程之IP、URL详解及实例代码的相关资料,需要的朋友可以参考下
    2017-03-03
  • java数据库开发之JDBC基础使用方法及实例详解

    java数据库开发之JDBC基础使用方法及实例详解

    这篇文章主要介绍了java数据库开发之JDBC基础知识详解,需要的朋友可以参考下
    2020-02-02
  • 自定义feignClient的常见坑及解决

    自定义feignClient的常见坑及解决

    这篇文章主要介绍了自定义feignClient的常见坑及解决方案,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教
    2021-10-10
  • 解决@Async(“taskExecutor“)异步线程报错问题

    解决@Async(“taskExecutor“)异步线程报错问题

    这篇文章主要介绍了解决@Async(“taskExecutor“)异步线程报错问题,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教
    2024-08-08

最新评论