首页 > 其他分享 >自定义GatewayFilter

自定义GatewayFilter

时间:2024-12-28 22:30:37浏览次数:5  
标签:GatewayFilter 自定义 配置 filter 过滤器 public

自定义GatewayFilter的方式

1、继承AbstractGatewayfilterfactory,自行提供承载配置的类以及配置加载后和配置字段对应的问题【参考自定义断言工厂实现】
2、继承AbstractNameValueGatewayfilterFactory,针对Name-Value结构的配置处理默认处理好了,拿来即用

通过实现GatewayFilterFactory接口的方式来自定义GatewayFilter

不直接实现该接口而是采用继承AbstractGatewayFilterFactory抽象类或者AbstractNameValueGatewayFilterFactory抽象类的方式

1,从AbstractNameValueGatewayFilterFactory类继承
2,编写的过滤器工厂类的命名规则按照 过滤器名称+GatewayFilterFactory来进行命名,并将该过滤器工厂实现交给spring容器
3,在配置文件中可配置前面起的过滤器名称,比如:

      routes:
        - id: route-driver
          uri: lb://hailtaxi-driver
          predicates:
            - Path=/api/driver/**
            - Cookie=username,value
            - Header=X-Request-Id, \d+
            - Token=Authorization
          filters:
            - AddRequestHeader=X-Request-red, blue
            - AddResponseHeader=X-Response-Red, Blue
            - StripPrefix=1
            # 自定义filter
            - Hello=aaa,bbb

按照规则我们编写的过滤器工厂类为:HelloGatewayFilterFactory

4,具体的实现类为

@Slf4j
@Component
public class HelloGatewayFilterFactory extends AbstractNameValueGatewayFilterFactory {
    @Override
    public GatewayFilter apply(NameValueConfig config) {
        return new GatewayFilter() {
            @Override
            public Mono<Void> filter(ServerWebExchange exchange, GatewayFilterChain chain) {
                log.info("name={},value={}",config.getName(),config.getValue());
                // write your logic here
                return chain.filter(exchange);//将请求交给下一个filter进行处理
            }
        };
    }
}

补充:通过配置文件配置的Filter,它们的执行顺序由配置顺序决定

标签:GatewayFilter,自定义,配置,filter,过滤器,public
From: https://www.cnblogs.com/Eduhg/p/18612676

相关文章

  • vue自定义标签模板
    resume-template参考博客https://blog.csdn.net/yangyiboshigou/article/details/72239844参考代码<!DOCTYPEhtml><htmllang="en"><head><metacharset="UTF-8"><titl......
  • 自定义Menu组件
    自定义Menu组件第一步:定义propsMenuProps接口定义了Menu组件接收的props,包括默认高亮项、样式、模式、选择项的回调函数和子组件。exportinterfaceMenuProps{defaultIndex?:number;//高亮className?:string;mode:MenuMode;//纵向横向s......
  • 7-Gin 中自定义控制器 --[Gin 框架入门精讲与实战案例]
    在Gin框架中,"控制器"通常指的是处理HTTP请求的逻辑。虽然Gin本身没有像一些其他框架(例如Django或RubyonRails)那样明确地定义"控制器"的概念,但你可以通过组织代码来实现类似的功能。Gin使用路由组和中间件来帮助组织你的应用程序逻辑。为了创建自定义控制器,你......
  • 如何使用飞书自定义机器人通知消息
         大家有没有这样的需求,就是正在执行某个任务的时候希望任务完成之后给个通知,或者是软件运行报错的时候每天定期收集错误日志。平时我们工作用的飞书,所有现在用飞书机器人把消息通知出来,非常简单好用的消息通知。类似这样的消息通知还有企业微信也有。飞书拉群......
  • cocoscreator自定义effect,实现图片溶解效果
    【游戏开发教程|  10堂课入门CocosCreatorShader|新手学习路线推荐】 webgl-shader入门  基础结构 ......
  • Kong中实现已登录用户自动跳转到指定页面功能(自定义插件开发教程)
    言简意赅的讲解Kong插件支持:使用生态插件与自定义开发解决的痛点之前给大家讲解得Kong作为领先的API网关,凭借其强大的插件架构,为开发者提供了极大的灵活性和扩展性。本文将详细介绍Kong对插件的支持,不仅涵盖如何使用其生态系统中的丰富插件,还将深入探讨如何开发自定义插件,......
  • 19章9节:一步一步构建高效读取NHANES数据的自定义函数
    解决研究者在分析NHANES数据时,常常面临的繁琐数据下载和处理问题。本篇文章以R语言为工具,带领读者一步步拆解构建高效读取NHANES数据的自定义函数。从函数设计到代码实现,每一步都提供详尽的说明和示例,帮助大家深入理解如何灵活地自动化处理NHANES数据,从而显著提高数据处理的效......
  • nacos根据业务需要自定义命名空间
    创建个订单的命名空间 配置列表这里就有了   代码 浏览器访问但是,在实际使用的过程中,业务链是相互调用的,有的配置需要归类在同一命名空间下,下订单需要用户信息吧,或者把公共的配置放到一个单独的命名空间下去调用,向数据库,redis,Mq都可以抽成一个公共的配置。不......
  • Apifox 12月更新|接口的测试覆盖情况、测试场景支持修改记录、迭代分支能力升级、自定
    Apifox新版本上线啦!!!在快速迭代的开发流程中,接口测试工具的强大功能往往决定了项目的效率和质量。而Apifox在12月的更新中,再次引领潮流,推出了一系列重磅功能!测试覆盖情况分析、场景修改记录、自定义权限等功能的加入,为开发者和测试人员带来了新的工作方式。这些功能具体......
  • 动/静二维码/条形码,自定义批量生成/识别
    许多人在使用二维码时,常常会感到系统生成的二维码过于单调,缺乏个性。尤其是对于那些涉及个人品牌、市场营销或创意项目的人来说,搭配自己喜欢的图案、配色,甚至是gif等内容定制一个独特而吸引眼球的二维码会更具创意;分享一款动/静态二维码、条形码批量生成工具:批量二维码生......