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() 新的响应构建器(上面的数据,可按需修改)
相关推荐
JustHappy32 分钟前
古法编程秘籍(二):什么是代码模块化?别背概念,把房间收拾明白就够了
前端·后端
小江的记录本39 分钟前
【JVM虚拟机】堆内存分代模型:年轻代(Eden+Survivor)、老年代、元空间Metaspace(附《思维导图》+《面试高频考点清单》)
java·前端·jvm·后端·python·spring·面试
在繁华处42 分钟前
Java从零到熟练(三):流程控制
java·开发语言·python
唐青枫1 小时前
Java Optional 实战指南:优雅处理空值与链式转换
java
一起学开源1 小时前
一文读懂 ReAct 范式:让 AI Agent 真正学会“思考+行动“
java·javascript·react.js·ecmascript·react·alibaba·智能体开发
逍遥德2 小时前
MQTT教程详解-04.SpringBoot集成MQTT(告别手动控制)
java·spring boot·物联网·中间件·iot·iotdb
语戚2 小时前
力扣 3161. 块放置查询:线段树解法(Java 实现)
java·算法·leetcode·面试·线段树·力扣·
我命由我123453 小时前
Android 开发问题:MlKitException: An internal error occurred during initialization.
android·java·java-ee·android jetpack·android-studio·androidx·android runtime
888CC++3 小时前
java 并发编程
java·开发语言·python
无风听海4 小时前
JSON Web Token(JWT)完全指南
java·前端·json