Solon Cloud Gateway 开发:Route 的过滤器与定制

RouteFilterFactory 是专为路由过滤拦截处理设计的接口。对应路由配置 filters

1、内置的路由过滤器

过滤器工厂 本置前缀 说明与示例
AddRequestHeaderFilterFactory AddRequestHeader= 添加请求头 (AddRequestHeader=Demo-Ver,1.0)
AddResponseHeaderFilterFactory AddResponseHeader= 添加响应头 (AddResponseHeader=Demo-Ver,1.0)
PrefixPathFilterFactory PrefixPath= 附加路径前缀 (PrefixPath=/app)
RedirectToFilterFactory RedirectTo= 跳转到 (RedirectTo=302,http://demo.org/a,true)
RemoveRequestHeaderFilterFactory RemoveRequestHeader= 移除请求头 (RemoveRequestHeader=Demo-Ver,1.0)
RemoveResponseHeaderFilterFactory RemoveResponseHeader= 移除响应头 (RemoveResponseHeader=Demo-Ver,1.0)
StripPrefixFilterFactory StripPrefix= 移除路径前缀段数 (StripPrefix=1)

2、定制示例

  • StripPrefix 过滤器定制示例(配置例:StripPrefix=1
java 复制代码
@Component
public class StripPrefixFilterFactory implements RouteFilterFactory {

    @Override
    public String prefix() {
        return "StripPrefix";
    }

    @Override
    public ExFilter create(String config) {
        return new StripPrefixFilter(config);
    }

    public static class StripPrefixFilter implements ExFilter {
        private int parts;

        public StripPrefixFilter(String config) {
            if (Utils.isBlank(config)) {
                throw new IllegalArgumentException("StripPrefixFilter config cannot be blank");
            }

            this.parts = Integer.parseInt(config);
        }

        @Override
        public Completable doFilter(ExContext ctx, ExFilterChain chain) {
            //目标路径重组
            List<String> pathFragments = Arrays.asList(ctx.newRequest().getPath().split("/", -1));
            String newPath = "/" + String.join("/", pathFragments.subList(parts + 1, pathFragments.size()));
            ctx.newRequest().path(newPath);

            return chain.doFilter(ctx);
        }
    }
}
相关推荐
杯莫停丶2 分钟前
设计模式之:简单工厂模式
java·设计模式·简单工厂模式
Lucky_Turtle2 分钟前
【Java Xml】dom4j写入XML
xml·java·python
superlls6 分钟前
(定时任务)接上篇:定时任务的分布式执行与分布式锁使用场景
java·分布式·后端
无敌的牛11 分钟前
C++复习(1)
java·开发语言·面试
子沫202012 分钟前
springboot中server.main.web-application-type=reactive导致的拦截器不生效
java·spring boot·后端
Pluchon17 分钟前
硅基计划4.0 算法 二叉树深搜(DFS)
java·数据结构·算法·leetcode·深度优先·剪枝
mortimer32 分钟前
Python 进阶:彻底理解类属性、类方法与静态方法
后端·python
知其然亦知其所以然39 分钟前
SpringAI让Java会画画?用Azure OpenAI生成AI图片太惊艳了!
后端·spring·openai
BugShare39 分钟前
XSS检测绕过(UTF-7编码绕过)
后端
ZhengEnCi41 分钟前
统一认证平台完全指南-从单点登录到企业级安全访问的数字化利器
后端