nestJs中 Guards ,Interceptors ,Pipes ,Controller ,Filters的执行顺序
执行顺序:
-
Guards(守卫):
Guards 是最先执行的中间件,用于确定是否允许请求继续处理。Guards 在请求被路由到控制器之前执行,通常用于身份验证、角色检查或权限验证。如果 Guards 返回一个布尔值false
或者抛出一个异常,请求处理流程将终止,不会执行后续的 Pipes、Interceptors 或控制器方法。 -
Interceptors(拦截器):
如果 Guards 允许请求继续,那么 Interceptors 会在 Pipes 和控制器方法之前执行。Interceptors 用于在请求被处理之前或响应返回给客户端之前执行一些逻辑,比如记录日志、转换数据格式或添加额外的元数据。 -
Pipes(管道):
Pipes 主要用于转换或验证请求体或请求参数。它们在 Interceptors 之后、控制器方法之前执行。Pipes 可以应用于控制器方法的参数,以在方法执行之前对数据进行处理。如果 Pipes 在处理数据时遇到错误,它们通常会抛出异常,这些异常随后会被 Filters 捕获处理。 -
Controller Method(控制器方法):
如果请求通过了 Guards 的检查,并且 Pipes 和 Interceptors 也正常执行,那么请求最终会被路由到相应的控制器方法。在控制器方法中,你可以执行业务逻辑并返回响应。 -
Filters(过滤器):
Filters 用于捕获和处理在请求处理流程中抛出的异常。它们在整个请求处理流程中都可以起作用,包括 Guards、Pipes、Interceptors 和控制器方法中抛出的异常。Filters 允许你以统一的方式处理错误,返回适当的响应给客户端。
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】凌霞软件回馈社区,博客园 & 1Panel & Halo 联合会员上线
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】博客园社区专享云产品让利特惠,阿里云新客6.5折上折
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· [翻译] 为什么 Tracebit 用 C# 开发
· Deepseek官网太卡,教你白嫖阿里云的Deepseek-R1满血版
· 2分钟学会 DeepSeek API,竟然比官方更好用!
· .NET 使用 DeepSeek R1 开发智能 AI 客户端
· 刚刚!百度搜索“换脑”引爆AI圈,正式接入DeepSeek R1满血版