Skip to content

core.Interceptor

攔截器在控制器呼叫前後插入驗證、記錄、計時和交易等橫切邏輯。

go
type Interceptor interface {
    PreHandle(ctx ExecutionContext, meta HandlerMeta) error
    PostHandle(ctx ExecutionContext, meta HandlerMeta)
    AfterCompletion(ctx ExecutionContext, meta HandlerMeta, err error)
}
  • PreHandle:控制器前執行;回傳錯誤可中止管線。
  • PostHandle:控制器與回傳值處理成功後執行。
  • AfterCompletion:成功、失敗或中止時都會執行。
go
app.Interceptor(&LoggingInterceptor{})
app.Route("GET", "/me", (*UserController).Me,
    route.WithInterceptors(&AuthInterceptor{}),
)

全域攔截器涵蓋所有路由,路由攔截器只涵蓋指定路由。前置階段依註冊順序執行,後置階段反向執行。