nestJs中 Guards ,Interceptors ,Pipes ,Controller ,Filters的執行順序

Esther_Cheung發表於2024-03-25

執行順序:

  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 允許你以統一的方式處理錯誤,返回適當的響應給客戶端。




相關文章