Fiber Hooks (피버 훅)

피버 프레임워크에서 제공하는 훅을 통해 프레임워크의 동작을 가로채고 중요한 지점에서 로직을 사용자 정의할 수 있습니다.

Fiber v2.30.0부터는 특정 메서드를 실행할 때 사용자 정의 사용자 함수를 실행할 수 있습니다. 다음은 이러한 훅의 목록입니다:

  • OnRoute (경로 훅)
  • OnName (이름 훅)
  • OnGroup (그룹 훅)
  • OnGroupName (그룹 이름 훅)
  • OnListen (듣기 훅)
  • OnFork (포크 훅)
  • OnShutdown (셧다운 훅)
  • OnMount (마운트 훅)

상수

// 핸들러는 훅을 생성하는 함수를 정의합니다.
type OnRouteHandler = func(Route) error
type OnNameHandler = OnRouteHandler
type OnGroupHandler = func(Group) error
type OnGroupNameHandler = OnGroupHandler
type OnListenHandler = func(ListenData) error
type OnForkHandler = func(int) error
type OnShutdownHandler = func() error
type OnMountHandler = func(*App) error

OnRoute (경로 훅)

OnRoute은 경로가 등록될 때마다 사용자 함수를 실행하는 훅입니다. 또한 route 매개변수를 통해 경로 속성에 접근할 수도 있습니다.

서명

func (app *App) OnRoute(handler ...OnRouteHandler)

OnName (이름 훅)

OnName은 경로가 이름 지정될 때마다 사용자 함수를 실행하는 훅입니다. 또한 route 매개변수를 통해 경로 속성에 접근할 수도 있습니다.

참고: OnName은 이름이 지정된 경로에만 적용되며 그룹에는 적용되지 않습니다.

서명

func (app *App) OnName(handler ...OnNameHandler)
  • OnName 예시
package main

import (
    "fmt"
    "github.com/gofiber/fiber/v2"
)

func main() {
    app := fiber.New()

    app.Get("/", func(c *fiber.Ctx) error {
        return c.SendString(c.Route().Name)
    }).Name("index")

    app.Hooks().OnName(func(r fiber.Route) error {
        fmt.Print("Name: " + r.Name + ", ")
        return nil
    })

    app.Hooks().OnName(func(r fiber.Route) error {
        fmt.Print("Method: " + r.Method + "\n")
        return nil
    })

    app.Get("/add/user", func(c *fiber.Ctx) error {
        return c.SendString(c.Route().Name)
    }).Name("addUser")

    app.Delete("/destroy/user", func(c *fiber.Ctx) error {
        return c.SendString(c.Route().Name)
    }).Name("destroyUser")

    app.Listen(":5000")
}

// 결과:
// Name: addUser, Method: GET
// Name: destroyUser, Method: DELETE

OnGroup (그룹 훅)

OnGroup은 그룹이 등록될 때마다 사용자 함수를 실행하는 훅입니다. 또한 group 매개변수를 통해 그룹 속성에 접근할 수도 있습니다.

서명

func (app *App) OnGroup(handler ...OnGroupHandler)

OnGroupName (그룹 이름 훅)

OnGroupName은 그룹이 이름이 지정될 때마다 사용자 함수를 실행하는 훅입니다. 또한 group 매개변수를 통해 그룹 속성에 접근할 수도 있습니다.

참고: OnGroupName은 이름이 지정된 그룹에만 적용되며 경로에는 적용되지 않습니다.

서명

func (app *App) OnGroupName(handler ...OnGroupNameHandler)

OnListen (듣기 훅)

OnListen 훅은 Listen, ListenTLS 또는 Listener 작업을 수행할 때 사용자 정의 함수를 실행하는 데 사용됩니다.

서명

func (app *App) OnListen(handler ...OnListenHandler)
  • OnListen 예시
app := fiber.New(fiber.Config{
  DisableStartupMessage: true,
})

app.Hooks().OnListen(func(listenData fiber.ListenData) error {
  if fiber.IsChild() {
      return nil
  }
  scheme := "http"
  if listenData.TLS {
    scheme = "https"
  }
  log.Println(scheme + "://" + listenData.Host + ":" + listenData.Port)
  return nil
})

app.Listen(":5000")

OnFork (포크 훅)

OnFork 훅은 포크 작업을 수행할 때 사용자 정의 함수를 실행하는 데 사용됩니다.

서명

func (app *App) OnFork(handler ...OnForkHandler)

OnShutdown (셧다운 훅)

OnShutdown 훅은 셧다운 작업을 수행한 후 사용자 정의 함수를 실행하는 데 사용됩니다.

서명

func (app *App) OnShutdown(handler ...OnShutdownHandler)

OnMount

OnMount은 마운팅 프로세스 후에 사용자 정의 함수를 실행하는 후크입니다. 하위 응용 프로그램을 상위 응용 프로그램에 마운트할 때, 마운트 이벤트가 트리거되며, 상위 응용 프로그램이 매개 변수로 전달됩니다. 응용 프로그램 및 그룹을 마운트하는 데 적합합니다.

서명

func (h *Hooks) OnMount(handler ...OnMountHandler) 
  • OnMount의 예시
package main

import (
    "fmt"
    "github.com/gofiber/fiber/v2"
)

func main() {
    app := New()
    app.Get("/", testSimpleHandler).Name("x")

    subApp := New()
    subApp.Get("/test", testSimpleHandler)
    
    subApp.Hooks().OnMount(func(parent *fiber.App) error {
        fmt.Print("상위 응용 프로그램의 마운트 경로: "+parent.MountPath())
        // ...

        return nil
    })

    app.Mount("/sub", subApp)
}

// 결과:
// 상위 응용 프로그램의 마운트 경로: 

참고: OnName/OnRoute/OnGroup/OnGroupName 후크는 마운트에 민감합니다. 하위 응용 프로그램에서 이러한 경로를 사용하고 마운트하면 경로 및 그룹의 경로는 마운트 접두사로 시작합니다.