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 후크는 마운트에 민감합니다. 하위 응용 프로그램에서 이러한 경로를 사용하고 마운트하면 경로 및 그룹의 경로는 마운트 접두사로 시작합니다.