• 教你在Zuul中增加Filter过滤请求


    转自:http://www.imooc.com/article/295172

    教你在Zuul中增加Filter过滤请求

    2019.11.08 17:32 2716浏览
     

    上一篇中,我们介绍了如何使用Zuul反向代理请求,这一篇我们介绍如何在Zuul中增加Filter来过滤请求,我们的示例也是延用上一篇的示例,没有看过上一篇的小伙伴们,请先阅读上一篇教你使用Zuul反向代理访问微服务

    Zuul过滤器

    Zuul的过滤器有4中标准的类型,分别如下:

    • pre:在请求被转发之前,执行过滤器
    • **route:**过滤器可以处理实际的请求转发
    • post:在请求被转发之后,执行过滤器
    • error:在请求被转发时发生错误,执行过滤器

    我们将会写一个“pre”类型的过滤器,给大家示例,其他类型的过滤器大同小异,大家可以私下自己练习。

    ZuulFilter

    首先我们要创建一个Filter继承ZuulFilter,并在Spring的配置中实例化这个Bean。具体如下:

    public class SimpleFilter extends ZuulFilter {  
     @Override  
     public String filterType() {  
     return "pre";  
     }  
      
     @Override  
     public int filterOrder() {  
     return 1;  
     }  
      
     @Override  
     public boolean shouldFilter() {  
     return true;  
     }  
      
     @Override  
     public Object run() throws ZuulException {  
     RequestContext ctx = RequestContext.getCurrentContext();  
     HttpServletRequest request = ctx.getRequest();  
     System.out.println(String.format("Zuul的pre类型过滤器 : %s request to %s",   
     request.getMethod(),  
     request.getRequestURL().toString()));  
      
     return null;  
     }  
    }  
    
    • filterType()方法返回的是过滤器的类型,这里我们返回的“pre”,说明过滤器的类型是“pre”类型。
    • filterOrder() 返回的是过滤器的执行顺序,当有多个过滤器时,这个值将决定过滤器的执行顺序。
    • shouldFilter() 返回true或false,标识着这个过滤器是否执行。当然我们可以在这个方法中增加一些逻辑,当满足某些条件时,执行这个过滤器。
    • run() 方法是过滤器的具体执行方法。

    启动类中实例化Filter

    过滤器的类我们已经写好了,接下来,我们在启动类中,用java config的方式配置这个类,如下:

    @SpringBootApplication  
    @EnableZuulProxy  
    public class ZuulApplication {  
     public static void main(String[] args) {  
     SpringApplication.run(ZuulApplication.class, args);  
     }  
     @Bean  
     public ZuulFilter simpleFilter(){  
     return new SimpleFilter();  
     }  
    }  
    

    下面我们启动微服务和Zuul反向代理两个应用,如果你不知道微服务是哪个应用,请参考上一篇教你使用Zuul反向代理访问微服务。然后我们在浏览器中访问http://localhost:8080/micro/hello,显示结果如下:

    图片描述

    说明请求已经转发成功了,我们再看看Zuul服务的后台日志:

    图片描述

    我们过滤器的日志也打印出来了。

    总结

    通过Zuul的过滤器,我们可以在转发的过程中增加一些业务操作,比如请求次数的统计等。今天就给大家介绍到这里,有问题评论区留言哦~~

  • 相关阅读:
    从零开始搭建Wpf基础9-使用MaterialDesignToolkit对界面进行美化下
    从零开始搭建Wpf基础8-登录界面成功后显示主窗体
    从零开始搭建Wpf基础7-Api数据接入
    从零开始搭建Wpf基础6-Tab选项卡MVVM实现
    Wpf下dragablz使用Prism8进行导航-3
    从零开始搭建Wpf基础5-无限级菜单MVVM实现
    从零开始搭建Wpf基础篇4-使用Prism进行模块化
    从零开始搭建Wpf初学篇3-界面模块化
    手写es5和es6实现原型继承
    判断类型(通用类型检测方法)和手写深拷贝
  • 原文地址:https://www.cnblogs.com/sharpest/p/13712689.html
Copyright © 2020-2023  润新知