zoukankan      html  css  js  c++  java
  • Spring Cloud Gateway 过滤器

    一、GatewayFilter 网关过滤器 

    GatewayFilter介绍

    GatewayFilter 网关过滤器用于拦截并链式处理web请求,可以实现横切的与应用无关的需求,比如:安全、访问超时的设置等。

    从类图中可以看到,GatewayFilter 有三个实现类:

    • OrderedGatewayFilter 是一个有序的网关过滤器

    • GatewayFilterAdapter 是一个适配器类,是web处理器(FilteringWebHandler)中的内部类

    • ModifyResponseGatewayFilter 是一个内部类,用于修改响应体

    有序的网关过滤器 OrderedGatewayFilter

    过滤器大多都是有优先级的,因此有序的网关过滤器的使用场景会很多。在实现过滤器接口的同时,有序网关过滤器也实现了 Ordered 接口,构造函数中传入需要代理的网关过滤器以及优先级就可以构造一个有序的网关过滤器。具体的过滤功能的实现在被代理的过滤器中实现的,因此在此只需要调用代理的过滤器即可。

    public class OrderedGatewayFilter implements GatewayFilter, Ordered {
    
        private final GatewayFilter delegate;
        private final int order;
    
        public OrderedGatewayFilter(GatewayFilter delegate, int order) {
            this.delegate = delegate;
            this.order = order;
        }
        --------------------------------省略-------------------------------
    }
    网关过滤器适配器 GatewayFilterAdapter

    在网关过滤器链 GatewayFilterChain 中会使用 GatewayFilter 过滤请求,GatewayFilterAdapter的作用就是将全局过滤器 GlobalFilter 适配成 网关过滤器 GatewayFilter。

    // FilteringWebHandler.java

    private static class GatewayFilterAdapter implements GatewayFilter {
    
            private final GlobalFilter delegate;
    
            public GatewayFilterAdapter(GlobalFilter delegate) {
                this.delegate = delegate;
            }
    
            @Override
            public Mono<Void> filter(ServerWebExchange exchange, GatewayFilterChain chain) {
                return this.delegate.filter(exchange, chain);
            }
    
            @Override
            public String toString() {
                final StringBuilder sb = new StringBuilder("GatewayFilterAdapter{");
                sb.append("delegate=").append(delegate);
                sb.append('}');
                return sb.toString();
            }
        }
    ModifyResponseGatewayFilter

    ModifyResponseGatewayFilter 是 ModifyResponseBodyGatewayFilterFactory 的内部类,用于修改响应体的信息。

    二、全局过滤器

  • 相关阅读:
    双系统重装windows后,修复grub启动
    【转】GeoIP + PHP 完全指南
    【转】Linux压缩打包命令使用方法
    【转】linux screen 的使用 教程
    【转】tar打包命令详解
    【转】SecureCRT 显示乱码问题(总结)
    【转】Windows Server 2008 配置终端服务
    【转】vsftp 添加用户 简单步骤
    【转】用移动硬盘装WIN7出现NTLDR is missing
    【转】Qt集成到VS2008中 ( Qt4.5.1 + qtvsaddin1.0.0 )
  • 原文地址:https://www.cnblogs.com/myitnews/p/14107925.html
Copyright © 2011-2022 走看看