फाइबर हुक्स

फाइबर फ्रेमवर्क द्वारा प्रदत्त हुक्स के माध्यम से, हम फ्रेमवर्क के व्यवहार को रोक सकते हैं और महत्वपूर्ण बिंदुओं पर तर्क को अनुकूलित कर सकते हैं।

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 एक हुक है जो प्रत्येक बार जब रूट दर्ज की जाती है, तो उपयोक्ता फ़ंक्शन को निष्पादित करता है। आप स्थिति पैरामीटर के माध्यम से भी रूट गुणों तक पहुंच सकते हैं।

हस्ताक्षर

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

OnName (नाम हुक)

OnName एक हुक है जो हर बार जब एक रूट का नाम निर्धारित किया जाता है, तो उपयोक्ता फ़ंक्शन को निष्पादित करता है। आप स्थिति पैरामीटर के माध्यम से भी रूट गुणों तक पहुंच सकते हैं।

नोट: 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")
}

// परिणाम:
// नाम: addUser, विधि: GET
// नाम: destroyUser, विधि: DELETE

OnGroup (समूह हुक)

OnGroup एक हुक है जो प्रत्येक बार जब एक समूह दर्ज किया जाता है, तो उपयोक्ता फ़ंक्शन को निष्पादित करता है। आप समूह पैरामीटर के माध्यम से भी समूह गुणों तक पहुंच सकते हैं।

हस्ताक्षर

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

OnGroupName (समूह नाम हुक)

OnGroupName एक हुक है जो प्रत्येक बार जब एक समूह का नाम निर्धारित किया जाता है, तो उपयोक्ता फ़ंक्शन को निष्पादित करता है। आप समूह पैरामीटर के माध्यम से भी समूह गुणों तक पहुंच सकते हैं।

नोट: 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 हुक्स माउंटिंग के प्रति संवेदनशील हैं। यदि आप इन रूटों का उपयोग एक उप-एप्लिकेशन पर करते हैं और इसे माउंट करते हैं, तो रूटों और समूहों के पथ माउंट प्रिफ़िक्स के साथ शुरू हो जाएंगे।