nestJs中 Guards ,Interceptors ,Pipes ,Controller ,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 允许你以统一的方式处理错误,返回适当的响应给客户端。




posted @ 2024-03-25 23:50  Esther_Cheung  阅读(69)  评论(0编辑  收藏  举报