Fiber Hooks
Durch die Hooks, die vom Fiber-Framework bereitgestellt werden, können wir das Verhalten des Frameworks abfangen und die Logik an entscheidenden Stellen anpassen.
Ab Fiber v2.30.0 ist es möglich, benutzerdefinierte Funktionen auszuführen, wenn bestimmte Methoden ausgeführt werden. Hier ist eine Liste dieser Hooks:
- OnRoute (Route-Hook)
- OnName (Name-Hook)
- OnGroup (Group-Hook)
- OnGroupName (Gruppenname-Hook)
- OnListen (Listen-Hook)
- OnFork (Fork-Hook)
- OnShutdown (Shutdown-Hook)
- OnMount (Mount-Hook)
Konstanten
// Handler definieren eine Funktion zur Erstellung von Hooks für 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 (Route-Hook)
OnRoute ist ein Hook, der die Benutzerfunktion jedes Mal ausführt, wenn eine Route registriert wird. Sie können auch auf die Routen-Eigenschaften über den route-Parameter zugreifen.
Signatur
func (app *App) OnRoute(handler ...OnRouteHandler)
OnName (Name-Hook)
OnName ist ein Hook, der die Benutzerfunktion jedes Mal ausführt, wenn einer Route ein Name zugewiesen wird. Sie können auch auf die Routen-Eigenschaften über den route-Parameter zugreifen.
Hinweis: OnName gilt nur für benannte Routen, nicht für Gruppen.
Signatur
func (app *App) OnName(handler ...OnNameHandler)
- Beispiel für 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("Methode: " + 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")
}
// Ergebnis:
// Name: addUser, Methode: GET
// Name: destroyUser, Methode: DELETE
OnGroup (Group-Hook)
OnGroup ist ein Hook, der die Benutzerfunktion jedes Mal ausführt, wenn eine Gruppe registriert wird. Sie können auch auf die Gruppen-Eigenschaften über den group-Parameter zugreifen.
Signatur
func (app *App) OnGroup(handler ...OnGroupHandler)
OnGroupName (Gruppenname-Hook)
OnGroupName ist ein Hook, der die Benutzerfunktion jedes Mal ausführt, wenn einer Gruppe ein Name zugewiesen wird. Sie können auch auf die Gruppen-Eigenschaften über den group-Parameter zugreifen.
Hinweis: OnGroupName gilt nur für benannte Gruppen, nicht für Routen.
Signatur
func (app *App) OnGroupName(handler ...OnGroupNameHandler)
OnListen (Listen-Hook)
Der OnListen
-Hook wird verwendet, um benutzerdefinierte Funktionen auszuführen, wenn die Listen, ListenTLS oder Listener-Operationen durchgeführt werden.
Signatur
func (app *App) OnListen(handler ...OnListenHandler)
- Beispiel für 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 (Fork-Hook)
Der OnFork
-Hook wird verwendet, um benutzerdefinierte Funktionen auszuführen, wenn die Fork-Operation durchgeführt wird.
Signatur
func (app *App) OnFork(handler ...OnForkHandler)
OnShutdown (Shutdown-Hook)
Der OnShutdown
-Hook wird verwendet, um benutzerdefinierte Funktionen nach der Durchführung der Shutdown-Operation auszuführen.
Signatur
func (app *App) OnShutdown(handler ...OnShutdownHandler)
OnMount
OnMount
ist ein Hook, der benutzerdefinierte Funktionen nach dem Montageprozess ausführt. Wenn eine Unteranwendung an eine übergeordnete Anwendung montiert wird, wird das Montageereignis ausgelöst und die übergeordnete Anwendung wird als Parameter übergeben. Er eignet sich für die Montage von Anwendungen und Gruppen.
Signatur
func (h *Hooks) OnMount(handler ...OnMountHandler)
- Beispiel für 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("Montagepfad der übergeordneten Anwendung: "+parent.MountPath())
// ...
return nil
})
app.Mount("/sub", subApp)
}
// Ergebnis:
// Montagepfad der übergeordneten Anwendung:
Hinweis: Die Hooks
OnName
/OnRoute
/OnGroup
/OnGroupName
reagieren empfindlich auf das Montieren. Wenn Sie diese Routen in einer Unteranwendung verwenden und sie montieren, werden die Pfade der Routen und Gruppen mit dem Montagepräfix beginnen.