首页 > 其他分享 >nestJs中 Guards ,Interceptors ,Pipes ,Controller ,Filters的执行顺序

nestJs中 Guards ,Interceptors ,Pipes ,Controller ,Filters的执行顺序

时间:2024-03-25 23:55:06浏览次数:21  
标签:控制器 请求 Pipes Interceptors Guards Filters

执行顺序:

  1. Guards(守卫):
    Guards 是最先执行的中间件,用于确定是否允许请求继续处理。Guards 在请求被路由到控制器之前执行,通常用于身份验证、角色检查或权限验证。如果 Guards 返回一个布尔值 false 或者抛出一个异常,请求处理流程将终止,不会执行后续的 Pipes、Interceptors 或控制器方法。

  2. Interceptors(拦截器):
    如果 Guards 允许请求继续,那么 Interceptors 会在 Pipes 和控制器方法之前执行。Interceptors 用于在请求被处理之前或响应返回给客户端之前执行一些逻辑,比如记录日志、转换数据格式或添加额外的元数据。

  3. Pipes(管道):
    Pipes 主要用于转换或验证请求体或请求参数。它们在 Interceptors 之后、控制器方法之前执行。Pipes 可以应用于控制器方法的参数,以在方法执行之前对数据进行处理。如果 Pipes 在处理数据时遇到错误,它们通常会抛出异常,这些异常随后会被 Filters 捕获处理。

  4. Controller Method(控制器方法):
    如果请求通过了 Guards 的检查,并且 Pipes 和 Interceptors 也正常执行,那么请求最终会被路由到相应的控制器方法。在控制器方法中,你可以执行业务逻辑并返回响应。

  5. Filters(过滤器):
    Filters 用于捕获和处理在请求处理流程中抛出的异常。它们在整个请求处理流程中都可以起作用,包括 Guards、Pipes、Interceptors 和控制器方法中抛出的异常。Filters 允许你以统一的方式处理错误,返回适当的响应给客户端。




标签:控制器,请求,Pipes,Interceptors,Guards,Filters
From: https://www.cnblogs.com/xinfangzhang/p/18095692

相关文章

  • C# 12 拦截器 Interceptors
    拦截器Interceptors是一种可以在编译时以声明方式替换原有应用的方法。这种替换是通过让Interceptors声明它拦截的调用的源位置来实现的。您可以使用拦截器作为源生成器的一部分进行修改,而不是向现有源编译添加代码。 演示使用.NET8创建一个控制台应用程序。并在Property......
  • Spring Boot学习随笔- 拦截器实现和配置(HandlerInterceptor、addInterceptors)、jar包
    学习视频:【编程不良人】2021年SpringBoot最新最全教程第十三章、拦截器拦截器:Interceptor拦截中断类似于javaweb中的Filter,不过没有Filter那么强大作用SpringMVC的拦截器是一种用于在请求处理过程中进行预处理和后处理的机制。拦截器可以在请求到达控制器之前和......
  • Tekton Trigger Interceptors 基础
    Interceptors概述Interceptor是针对特定平台的的事件处理器,在TriggerBinding之前运行。它允许您执行有效负载过滤、验证(使用秘密)、转换、定义和测试触发条件,以及实现其他有用的处理。一旦事件数据通过Interceptor,它就会在将有效负载数据传递到TriggerBinding之前转到Trigger。......
  • Tekton Trigger Interceptors 基础
    Interceptors概述Interceptor是针对特定平台的的事件处理器,在TriggerBinding之前运行。它允许您执行有效负载过滤、验证(使用秘密)、转换、定义和测试触发条件,以及实现其他有用的处理。一旦事件数据通过Interceptor,它就会在将有效负载数据传递到TriggerBinding之前转到Trigger......
  • 无涯教程-批处理 - Batch Files – Pipes函数
    管道运算符(|)获取一个命令的输出(默认为STDOUT),并将其定向到另一命令的输入(默认为STDIN),如,以下命令对目录C:\的内容进行排序dirC:\|sort在此示例中,两个命令同时启动,但随后sort命令暂停,直到收到dir命令的输出,sort命令使用dir命令的输出作为输入,然后将其输出发送到句柄1(即S......
  • React Native在非组件的地方使用页面跳转(interceptors拦截器处跳转页面)
    官方文档:https://reactnavigation.org/docs/navigating-without-navigation-prop/修改APP.jsimport{NavigationContainer}from'@react-navigation/native';import{navigationRef}from'./RootNavigation';exportdefaultfunctionApp(){r......
  • P4182 [USACO18JAN] Lifeguards P
    P4182[USACO18JAN]LifeguardsP更好的阅读体验提供一个比较优秀大常数的时间\(\mathcalO(nm)\),空间线性的做法。由于变量名冲突,本文中\(m\)均指题目中的\(k\)。推推性质,发现若区间包含了另一个区间,则一定删掉被包含的区间,正确性显然。这样我们得到了一些左右端点都递增......
  • 无涯教程-进程 - 管道(Pipes)
    管道是两个或多个相关进程之间的通信介质,它可以在一个进程内,也可以在子进程与父进程之间进行通信。可以实时查看管道机制,例如用管道将水填充到某个容器(例如桶)中,然后取回某人(例如用杯子)。填充进程只不过是写入管道,而读取进程只不过是从管道中检索,这意味着一个输出(水)被输入......
  • 漏洞深度分析 | Apache StreamPipes 存在权限绕过漏洞导致垂直越权
    项目地址https://github.com/apache/streampipes项目介绍ApacheStreamPipes使工业数据分析变得简单!StreamPipes是工业物联网的端到端工具箱。它带有针对非技术用户的丰富的图形用户界面,并提供以下功能: 快速连接超过20种工业协议,例如OPC-UA、PLC、MQTT、REST、Pulsar、Kafka......
  • 漏洞预警|Apache StreamPipes 权限升级漏洞
    近日,棱镜七彩威胁情报团队探测到开源项目ApacheStreamPipes存在权限升级漏洞,经分析研判,向全社会发起开源漏洞预警公告,提醒相关安全团队及时响应。项目介绍ApacheStreamPipes(incubating)是一个工业物联网工具箱,它使非技术用户能够灵活地连接、分析和利用连续数据流。StreamPipes......