Solon v3.0.3

三、熟悉 ExContext 及相关接口

</> markdown

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

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

ExFilter

应用场景

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

ExPredicate

应用场景

  • RoutePredicateFactory::create() -> ExPredicate
@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()新的响应构建器(上面的数据,可按需修改)