Solon Cloud Gateway 开发:熟悉 ExContext 及相关接口

分布式网关的主要工作是路由及数据交换,在定义时,会经常用到:

接口 说明
RouteFilterFactory 路由过滤器工厂
RoutePredicateFactory 路由检测器工厂
CloudGatewayFilter 分布式网关过滤器
ExFilter 交换过滤器
ExPredicate 交换检测器
ExContext 交换上下文

ExFilter

应用场景

  • CloudGatewayFilter extends ExFilter
  • RouteFilterFactory::cteate()
java 复制代码
@FunctionalInterface
public interface ExFilter {
    /**
     * 过滤
     *
     * @param ctx   交换上下文
     * @param chain 过滤链
     */
    Completable doFilter(ExContext ctx, ExFilterChain chain);
}

ExPredicate

应用场景

  • RoutePredicateFactory::create() -> ExPredicate
java 复制代码
@FunctionalInterface
public interface ExPredicate extends Predicate<ExContext> {
}

ExContext

方法 说明
attr(name) 获取属性
attrSet(name, value) 设置属性
target() 路由目标
timeout() 超时配置
remoteAddress() 远程地址
localAddress() 本地地址
realIp() 客户端真实IP
isSecure() 是否安全请求(即 ssl)
rawMethod() 获取原始请求方法
rawURI() 获取原始完整请求地址 uri
rawPath() 原始请求路径
rawQueryString() 获取原始查询字符串
rawQueryParam(name) 获取原始查询参数
rawQueryParams() 获取原始所有查询参数
rawHeader(name) 原始请求头
rawHeaders() 获取原始所有头
rawCookie(name) 原始请求小饼
rawCookies() 获取原始所有小饼
newRequest() 新的请求构建器(上面的数据,可按需修改)
newResponse() 新的响应构建器(上面的数据,可按需修改)
相关推荐
狂炫冰美式2 分钟前
《预言市场进化论:从罗马斗兽场,到 Polymarket 的 K 线图》
前端·后端
程序员卷卷狗4 分钟前
Java 单例模式的五种实现:饿汉式、懒汉式、DCL、静态内部类、枚举单例
java·开发语言·单例模式
@淡 定5 分钟前
动态代理(JDK动态代理/CGLIB动态代理
java·开发语言·python
悟能不能悟13 分钟前
java 判断string[]中是否有a
java·开发语言
4***149013 分钟前
高并发时代的“确定性”挑战——为何稳定性正在成为 JVM 的下一场核心竞争?
java·开发语言·jvm
hahjee17 分钟前
Go编写的ANSI终端颜色和样式控制库在OpenHarmony PC上的完整适配实战
开发语言·后端·鸿蒙
野蛮人6号25 分钟前
黑马微服务p10mybatisplus09核心功能iservice 测试文档无法正常打开
java·黑马微服务
危险、26 分钟前
《Java Stream 中 toMap 的生产级用法:一次 Duplicate key 的异常问题复盘》
java
古城小栈31 分钟前
Java 内存优化:JDK 22 ZGC 垃圾收集器调优
java·python·算法
福大大架构师每日一题34 分钟前
rust 1.92.0 更新详解:语言特性增强、编译器优化与全新稳定API
java·javascript·rust