Crochets Fiber
À travers les crochets fournis par le framework Fiber, nous pouvons intercepter le comportement du framework et personnaliser la logique à des points cruciaux.
À partir de Fiber v2.30.0, vous pouvez exécuter des fonctions utilisateur personnalisées lors de l'exécution de certaines méthodes. Voici une liste de ces crochets :
- OnRoute (Crochet de route)
- OnName (Crochet de nom)
- OnGroup (Crochet de groupe)
- OnGroupName (Crochet de nom de groupe)
- OnListen (Crochet d'écoute)
- OnFork (Crochet de bifurcation)
- OnShutdown (Crochet d'arrêt)
- OnMount (Crochet de montage)
Constants
// Les gestionnaires définissent une fonction pour créer des crochets pour 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 (Crochet de route)
OnRoute est un crochet qui exécute la fonction utilisateur à chaque fois qu'une route est enregistrée. Vous pouvez également accéder aux propriétés de la route via le paramètre route.
Signature
func (app *App) OnRoute(handler ...OnRouteHandler)
OnName (Crochet de nom)
OnName est un crochet qui exécute la fonction utilisateur à chaque fois qu'une route est nommée. Vous pouvez également accéder aux propriétés de la route via le paramètre route.
Remarque : OnName s'applique uniquement aux routes nommées, pas aux groupes.
Signature
func (app *App) OnName(handler ...OnNameHandler)
- Exemple de 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("Nom : " + r.Name + ", ")
return nil
})
app.Hooks().OnName(func(r fiber.Route) error {
fmt.Print("Méthode : " + r.Method + "\n")
return nil
})
app.Get("/ajouter/utilisateur", func(c *fiber.Ctx) error {
return c.SendString(c.Route().Name)
}).Name("ajouterUtilisateur")
app.Delete("/supprimer/utilisateur", func(c *fiber.Ctx) error {
return c.SendString(c.Route().Name)
}).Name("supprimerUtilisateur")
app.Listen(":5000")
}
// Résultat :
// Nom : ajouterUtilisateur, Méthode : GET
// Nom : supprimerUtilisateur, Méthode : DELETE
OnGroup (Crochet de groupe)
OnGroup est un crochet qui exécute la fonction utilisateur à chaque fois qu'un groupe est enregistré. Vous pouvez également accéder aux propriétés du groupe via le paramètre group.
Signature
func (app *App) OnGroup(handler ...OnGroupHandler)
OnGroupName (Crochet de nom de groupe)
OnGroupName est un crochet qui exécute la fonction utilisateur à chaque fois qu'un groupe est nommé. Vous pouvez également accéder aux propriétés du groupe via le paramètre group.
Remarque : OnGroupName s'applique uniquement aux groupes nommés, pas aux routes.
Signature
func (app *App) OnGroupName(handler ...OnGroupNameHandler)
OnListen (Crochet d'écoute)
Le crochet OnListen
est utilisé pour exécuter des fonctions définies par l'utilisateur lors de l'exécution des opérations Listen, ListenTLS ou Listener.
Signature
func (app *App) OnListen(handler ...OnListenHandler)
- Exemple 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 (Crochet de bifurcation)
Le crochet OnFork
est utilisé pour exécuter des fonctions définies par l'utilisateur lors de l'opération de bifurcation.
Signature
func (app *App) OnFork(handler ...OnForkHandler)
OnShutdown (Crochet d'arrêt)
Le crochet OnShutdown
est utilisé pour exécuter des fonctions définies par l'utilisateur après avoir effectué l'opération d'arrêt.
Signature
func (app *App) OnShutdown(handler ...OnShutdownHandler)
OnMount
OnMount
est un hook qui exécute des fonctions définies par l'utilisateur après le processus de montage. Lorsqu'une sous-application est montée sur une application parent, l'événement de montage est déclenché, avec l'application parent étant passé en paramètre. Il est adapté pour le montage d'applications et de groupes.
Signature
func (h *Hooks) OnMount(handler ...OnMountHandler)
- Exemple d'utilisation de 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("Chemin de montage de l'application parent : "+parent.MountPath())
// ...
return nil
})
app.Mount("/sub", subApp)
}
// Résultat :
// Chemin de montage de l'application parent :
Remarque : Les hooks OnName/OnRoute/OnGroup/OnGroupName sont sensibles au montage. Si vous utilisez ces routes sur une sous-application et que vous la montez, les chemins des routes et des groupes commenceront par le préfixe de montage.