首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

中间件、守卫、拦截器、管道、过滤器等之间的确切执行顺序是什么?

中间件、守卫、拦截器、管道、过滤器之间的确切执行顺序如下:

  1. 过滤器(Filter):过滤器是在请求到达目标之前或者响应返回给客户端之前对请求或响应进行预处理或后处理的组件。过滤器可以对请求进行拦截,进行一些预处理操作,然后将请求传递给下一个组件。在响应返回给客户端之前,过滤器还可以对响应进行处理。过滤器的执行顺序是按照配置的顺序依次执行。
  2. 拦截器(Interceptor):拦截器是在请求到达目标之前或者响应返回给客户端之前对请求或响应进行拦截和处理的组件。拦截器可以在请求到达目标之前进行预处理操作,也可以在响应返回给客户端之前进行后处理操作。拦截器的执行顺序是按照配置的顺序依次执行。
  3. 守卫(Guard):守卫是在路由导航过程中用于控制访问权限的组件。守卫可以在路由导航之前进行预处理操作,判断是否允许用户访问某个路由。守卫的执行顺序是按照路由导航的顺序依次执行。
  4. 中间件(Middleware):中间件是在请求到达目标之前或者响应返回给客户端之前对请求或响应进行处理的组件。中间件可以对请求进行拦截和处理,也可以对响应进行处理。中间件的执行顺序是按照配置的顺序依次执行。
  5. 管道(Pipeline):管道是一种将多个中间件组合起来形成一个处理链的机制。请求会按照管道中的顺序依次经过每个中间件进行处理。每个中间件可以对请求进行处理,并将请求传递给下一个中间件。管道的执行顺序是按照中间件在管道中的顺序依次执行。

总结起来,执行顺序为:过滤器 -> 拦截器 -> 守卫 -> 中间件 -> 管道。每个组件都有自己的特定作用,可以根据需求选择合适的组件进行处理。

页面内容是否对你有帮助?
有帮助
没帮助

相关·内容

  • Nestjs入门教程【一】基础概念

    不知大家可否听说过 Java 语言大名鼎鼎的几个框架——SpringBoot、SpringMVC。不可否认这些框架的设计思想在后端服务领域都是领先的。作为以 Javascript 为主要开发语言的我们,也想有这样一些优秀的、渐进式的服务端框架,虽然在此之前有 Express 、Koa、Egg 等基于Nodejs的服务端框架,但都不是我钟爱的,因为我入门编程就是使用Java的三大框架SSH。MVC 也许是大多开发者所能接受的开发思想了,这里解释一下,M(Model模型即数据层)、V(View视图,现多为前后端分离项目,后端只提供接口服务)、C(Controller控制器,控制前端请求来的路由分发等)。明白这三点只是基础,随着业务不断复杂,我们需要管理的数据越来越多、数据库操作越来越复杂、关于性能缓存的要求越来越高,我们可能会变得束手无策。如何优雅地管理项目模块,变得尤为重要,我觉得 Nestjs 正是这样一个帮助我们更好开发的框架。我们开始学习吧!

    03

    过滤器与拦截器详解图_过滤器 拦截器

    拦截器详解 依赖于web框架,在SpringMVC中就是依赖于SpringMVC框架。在实现上基于Java的反射机制,属于面向切面编程(AOP)的一种运用。由于拦截器是基于web框架的调用,拦截器可以调用IOC容器中的各种依赖,而过滤器不能,因此可以使用Spring的依赖注入进行一些业务操作,同时一个拦截器实例在一个controller生命周期之内可以多次调用。但是缺点是只能对controller请求进行拦截,对其他的一些比如直接访问静态资源的请求则没办法进行拦截处理。 spring mvc中的Interceptor可以理解为是Spring MVC框架对AOP的一种实现方式。一般简单的功能又是通用的,每个请求都要去处理的,比如判断token是否失效可以使用spring mvc的HanlderInterceptor, 复杂的,比如缓存,需要高度自定义的就用spring aop。一般来说service层更多用spring aop,controller层有必要用到request和response的时候,可以用拦截器。 spring mvc中的Interceptor拦截请求是通过HandlerInterceptor来实现的。所以HandlerInteceptor拦截器只有在Spring Web MVC环境下才能使用。在SpringMVC中定义一个拦截器主要有两种方式,第一种方式是要实现Spring的HandlerInterceptor接口,或者是其它实现了HandlerInterceptor接口的类,比如HandlerInterceptorAdapter。第二种方式是实现WebRequestInterceptor接口,或者其它实现了WebRequestInterceptor的类。 HandlerInterceptor接口定义方法preHandle, postHandle, 和afterCompletion: preHandle(进入 Handler方法之前执行):预处理回调方法,实现处理器的预处理(如登录检查),返回值:true表示继续流程(如调用下一个拦截器或处理器),false表示流程中断(如登录检查失败),不会继续调用其他的拦截器或处理器,此时我们需要通过response来产生响应。 postHandle(进入handler方法之后,返回modelAndView之前):后处理回调方法,实现处理器的后处理(但在渲染视图之前),此时我们可以通过modelAndView(模型和视图对象)对模型数据进行处理或对视图进行处理,modelAndView也可能为null。 afterCompletion(执行Handler完成执行此方法):整个请求处理完毕回调方法,即在视图渲染完毕时回调。该方法也是需要当前对应的Interceptor 的preHandle方法的返回值为true时才会执行。这个方法的主要作用是用于进行资源清理工作的,如性能监控中我们可以在此记录结束时间并输出消耗时间。 以HandlerInterceptor1、HandlerInterceptor2为例,解析拦截器执行顺序 第一种情况:正常的拦截器执行流程

    02
    领券