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 Phone 四、控件模版
    Windows Phone 三、样式和资源
    Windows Phone 一、XAML基础语法
    第三次月考
    第三次月考
    第七章 LED将为我们闪烁:控制发光二极管
    第六章 第一个linux个程序:统计单词个数
    第五章 搭建S36510开发板的测试环境
    Android深度探索读后感 第四章
    Android深度探索读后感 第三章
  • 原文地址:https://www.cnblogs.com/myitnews/p/14107925.html
Copyright © 2011-2022 走看看