当前位置: 首页 > news >正文

Spring Cloud全解析:网关之zuul过滤器

zuul过滤器

zuul有四种类型的过滤器

  • pre 请求被路由之前执行,可以进行限流、身份验证、鉴权、参数检验、请求转发,用于设置RequestContext中的数据,以供下游的过滤器使用
  • route 路由后,微服务调用前执行,用来发送请求给其他微服务,大部分工作为转换请求和响应数据
  • post 在route和error之后执行,可以用来给响应添加头信息、收集统计信息和指标、将响应从微服务发送给客户端
  • error 处理发生错误时调用
public void doFilter(ServletRequest servletRequest, ServletResponse servletResponse, FilterChain filterChain) throws IOException, ServletException {try {init((HttpServletRequest) servletRequest, (HttpServletResponse) servletResponse);try {preRouting();} catch (ZuulException e) {error(e);postRouting();return;}// Only forward onto to the chain if a zuul response is not being sentif (!RequestContext.getCurrentContext().sendZuulResponse()) {filterChain.doFilter(servletRequest, servletResponse);return;}try {routing();} catch (ZuulException e) {error(e);postRouting();return;}try {postRouting();} catch (ZuulException e) {error(e);return;}} catch (Throwable e) {error(new ZuulException(e, 500, "UNCAUGHT_EXCEPTION_FROM_FILTER_" + e.getClass().getName()));} finally {RequestContext.getCurrentContext().unset();}
}

自定义过滤器

继承ZuulFilter抽象类

// 过滤器类型,pre、route、post、error
abstract public String filterType();// 过滤器的执行顺序
abstract public int filterOrder();// 是否需要执行
boolean shouldFilter();// 执行逻辑
Object run();

禁用某种过滤器

zuul默认会启用一些过滤器,如servletDetectionFilter、formBodyWrapperFilter、debugFilter等

zuul:DebugFilter: # 过滤器类的名字pre: # 类型disable: true

https://zhhll.icu/2021/框架/微服务/springcloud/网关/zuul/2.zuul过滤器/


http://www.mrgr.cn/news/14350.html

相关文章:

  • 【Java 设计模式】Business Delegate 模式:简化业务服务交互
  • 界面控件Telerik UI for ASP.NET Core 2024 Q2亮点 - AI与UI的融合
  • 骑行适合戴的耳机?开放式耳机测评
  • F - Knapsack for All Subsets 子集和=s 问题
  • 轻量级冠军:NVIDIA 发布具有领先准确率的小语言模型
  • 用sounddevice实现连续的音乐曲库播放
  • junit格式报告解析工具
  • 本周智能体平台数据
  • vue ref和reactive区别
  • Opencv 隔帧取数据解码速度优化
  • kubenetes--资源调度
  • 实战 element-plus 级联选择器(Cascader)+企微部门架构
  • 从json字符串中获取指定值
  • Windows 平台编译openssl3.3
  • 全自动饲料机整套设备:养殖业生产线利器
  • 深入理解Spring Security
  • 数学建模学习(128):使用Python结合CILOS与熵法的多准则决策权重确定
  • pytorch 数据处理
  • pytorch中的__init__()与super__init__()方法
  • 文件包含漏洞(1)