Ganchos de Fiber
A través de los ganchos proporcionados por el marco de trabajo Fiber, podemos interceptar el comportamiento del marco de trabajo y personalizar la lógica en puntos cruciales.
A partir de Fiber v2.30.0, puedes ejecutar funciones personalizadas cuando se ejecutan ciertos métodos. Aquí está la lista de estos ganchos:
- OnRoute (Gancho de Ruta)
- OnName (Gancho de Nombre)
- OnGroup (Gancho de Grupo)
- OnGroupName (Gancho de Nombre de Grupo)
- OnListen (Gancho de Escucha)
- OnFork (Gancho de Fork)
- OnShutdown (Gancho de Apagado)
- OnMount (Gancho de Montaje)
Constantes
// Los manejadores definen una función para crear ganchos para Fiber.
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 (Gancho de Ruta)
OnRoute es un gancho que ejecuta la función del usuario cada vez que se registra una ruta. También puedes acceder a las propiedades de la ruta a través del parámetro route.
Firma
func (app *App) OnRoute(handler ...OnRouteHandler)
OnName (Gancho de Nombre)
OnName es un gancho que ejecuta la función del usuario cada vez que se nombra una ruta. También puedes acceder a las propiedades de la ruta a través del parámetro route.
Nota: OnName solo se aplica a las rutas con nombre, no a los grupos.
Firma
func (app *App) OnName(handler ...OnNameHandler)
- Ejemplo de OnName
paquete principal
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("Nombre: " + r.Name + ", ")
return nil
})
app.Hooks().OnName(func(r fiber.Route) error {
fmt.Print("Método: " + r.Method + "\n")
return nil
})
app.Get("/agregar/usuario", func(c *fiber.Ctx) error {
return c.SendString(c.Route().Name)
}).Name("agregarUsuario")
app.Delete("/eliminar/usuario", func(c *fiber.Ctx) error {
return c.SendString(c.Route().Name)
}).Name("eliminarUsuario")
app.Listen(":5000")
}
// Resultado:
// Nombre: agregarUsuario, Método: GET
// Nombre: eliminarUsuario, Método: DELETE
OnGroup (Gancho de Grupo)
OnGroup es un gancho que ejecuta la función del usuario cada vez que se registra un grupo. También puedes acceder a las propiedades del grupo a través del parámetro group.
Firma
func (app *App) OnGroup(handler ...OnGroupHandler)
OnGroupName (Gancho de Nombre de Grupo)
OnGroupName es un gancho que ejecuta la función del usuario cada vez que se nombra un grupo. También puedes acceder a las propiedades del grupo a través del parámetro group.
Nota: OnGroupName solo se aplica a los grupos con nombre, no a las rutas.
Firma
func (app *App) OnGroupName(handler ...OnGroupNameHandler)
OnListen (Gancho de Escucha)
El gancho OnListen
se utiliza para ejecutar funciones definidas por el usuario al realizar las operaciones Listen, ListenTLS o Listener.
Firma
func (app *App) OnListen(handler ...OnListenHandler)
- Ejemplo de 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 (Gancho de Fork)
El gancho OnFork
se utiliza para ejecutar funciones definidas por el usuario al realizar la operación Fork.
Firma
func (app *App) OnFork(handler ...OnForkHandler)
OnShutdown (Gancho de Apagado)
El gancho OnShutdown
se utiliza para ejecutar funciones definidas por el usuario después de realizar la operación de apagado.
Firma
func (app *App) OnShutdown(handler ...OnShutdownHandler)
OnMount
OnMount
es un gancho que ejecuta funciones definidas por el usuario después del proceso de montaje. Cuando se monta una subaplicación en una aplicación principal, se desencadena el evento de montaje, pasando la aplicación principal como parámetro. Es adecuado para montar aplicaciones y grupos.
Firma
func (h *Hooks) OnMount(handler ...OnMountHandler)
- Ejemplo de OnMount
paquete principal
import (
"fmt"
"github.com/gofiber/fiber/v2"
)
func principal() {
app := New()
app.Get("/", testSimpleHandler).Name("x")
subApp := New()
subApp.Get("/test", testSimpleHandler)
subApp.Hooks().OnMount(func(parent *fiber.App) error {
fmt.Print("Ruta de montaje de la aplicación principal: "+parent.MountPath())
// ...
return nil
})
app.Mount("/sub", subApp)
}
// Resultado:
// Ruta de montaje de la aplicación principal:
Nota: Los ganchos OnName/OnRoute/OnGroup/OnGroupName son sensibles al montaje. Si utiliza estas rutas en una subaplicación y la monta, los caminos de las rutas y grupos comenzarán con el prefijo de montaje.