Skip to main content
Version: Next

🪝 Hooks

With Fiber v2.30.0, you can execute custom user functions when to run some methods. Here is a list of this hooks:

Constants

// Handlers define a function to create hooks for Fiber.
type OnRouteHandler = func(Route) error
type OnNameHandler = OnRouteHandler
type OnGroupHandler = func(Group) error
type OnGroupNameHandler = OnGroupHandler
type OnListenHandler = func() error
type OnForkHandler = func(int) error
type OnShutdownHandler = OnListenHandler
type OnMountHandler = func(*App) error

OnRoute

OnRoute is a hook to execute user functions on each route registeration. Also you can get route properties by route parameter.

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

OnName

OnName is a hook to execute user functions on each route naming. Also you can get route properties by route parameter.

caution

OnName only works with naming routes, not groups.

Signature
func (app *App) OnName(handler ...OnNameHandler)
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")
}

// Results:
// Name: addUser, Method: GET
// Name: destroyUser, Method: DELETE

OnGroup

OnGroup is a hook to execute user functions on each group registeration. Also you can get group properties by group parameter.

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

OnGroupName

OnGroupName is a hook to execute user functions on each group naming. Also you can get group properties by group parameter.

caution

OnGroupName only works with naming groups, not routes.

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

OnListen

OnListen is a hook to execute user functions on Listen, ListenTLS, Listener.

Signature
func (app *App) OnListen(handler ...OnListenHandler)

OnFork

OnFork is a hook to execute user functions on Fork.

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

OnShutdown

OnShutdown is a hook to execute user functions after Shutdown.

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

OnMount

OnMount is a hook to execute user function after mounting process. The mount event is fired when sub-app is mounted on a parent app. The parent app is passed as a parameter. It works for app and group mounting.

Signature
func (h *Hooks) OnMount(handler ...OnMountHandler) 
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("Mount path of parent app: "+parent.MountPath())
// ...

return nil
})

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

// Result:
// Mount path of parent app:
caution

OnName/OnRoute/OnGroup/OnGroupName hooks are mount-sensitive. If you use one of these routes on sub app and you mount it; paths of routes and groups will start with mount prefix.