فائبر ہکس

فائبر فریم ورک کے دوارِ دی گئی ہکس کے ذریعے، ہم فریم ورک کا رویہ قبض کر سکتے ہیں اور اہم نکات پر منطق کو تخصیص دے سکتے ہیں۔

فائبر v2.30.0 سے شروع ہوکرتے ہوئے، آپ کچھ تفصیلات کی میں میں میں مسلسل میں چلانے عمل کرتے وقت بند حولیوں پر بنیادی کسی بھی ترکیب کو چلانے کے لئے انتخاب کرسکتے ہیں۔ ان ہکس کی فہرست یہ ہے:

  • OnRoute (راستے ہک)
  • OnName (نام ہک)
  • OnGroup (گروپ ہک)
  • OnGroupName (گروپ نام ہک)
  • OnListen (سنواری ہک)
  • OnFork (فورک ہک)
  • OnShutdown (بندش ہک)
  • OnMount (ماؤنٹ ہک)

مستقلات

// ہینڈلرز فائبر کے لئے ایک تفصیلات تحدید کرنے کا تفصیل
نوع OnRouteHandler =  func(Route) خرابی
نوع OnNameHandler = OnRouteHandler
نوع OnGroupHandler =  func(Group) خرابی
نوع OnGroupNameHandler = OnGroupHandler
نوع OnListenHandler =  func(ListenData) خرابی
نوع OnForkHandler =  func(int) خرابی
نوع OnShutdownHandler =  func() خرابی
نوع OnMountHandler =  func(*App) خرابی

OnRoute (راستے ہک)

OnRoute ایک ہک ہے جو ہر بار جب ایک راستہ درج کیا جاتا ہے، صارف کا تفصیلات سے دسترس حاصل کرنے کیلئے یوزر فنکشن کو چلا تے ہیں۔ آپ route پیرامیٹر کے ذریعے بھی راستے کی خصوصیات تک رسائی حاصل کر سکتے ہیں۔

دستاویز

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

OnName (نام ہک)

OnName ایک ہک ہے جو ہر بار جب راستہ کا نام درج کیا جاتا ہے، صارف کا تفصیلات سے دسترس حاصل کرنے کیلئے یوزر فنکشن کو چلا تے ہیں۔ آپ route پیرامیٹر کے ذریعے بھی راستے کی خصوصیات تک رسائی حاصل کر سکتے ہیں۔

نوٹ: OnName صرف نام دار راستوں کے لئے ہے، گروپ کو نہیں۔

دستاویز

pun (app *App) OnName(handler ...OnNameHandler)
  • OnName مثال
پیکیج اہم

ایمپورٹ (
    "fmt"
    "github.com/gofiber/fiber/v2"
)

فن میں
app := fiber.New()

app.Get("/", func(c *fiber.Ctx) خرابی {
    واپس c.SendString(c.Route().Name)
}).Name("index")

app.Hooks().OnName(func(r fiber.Route) خرابی {
    fmt.Print("Name: " + r.Name + ", ")
    واپس nil
})

app.Hooks().OnName(func(r fiber.Route) خرابی {
    fmt.Print("Method: " + r.Method + "\n")
    واپس nil
})

app.Get("/add/user", func(c *fiber.Ctx) خرابی {
    واپس c.SendString(c.Route().Name)
}).Name("addUser")

app.Delete("/destroy/user", func(c *fiber.Ctx) خرابی {
    واپس c.SendString(c.Route().Name)
}).Name("destroyUser")

app.Listen(":5000")
}

// نتیجہ:
// Name: addUser, Method: GET
// Name: destroyUser, Method: DELETE

OnGroup (گروپ ہک)

OnGroup ایک ہک ہے جو ہر بار جب گروپ درج کیا جاتا ہے، صارف کا تفصیلات سے دسترس حاصل کرنے کیلئے یوزر فنکشن کو چلا تے ہیں۔ آپ group پیرامیٹر کے ذریعے بھی گروپ کی خصوصیات تک رسائی حاصل کر سکتے ہیں۔

دستاویز

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

OnGroupName (گروپ نام ہک)

OnGroupName ایک ہک ہے جو ہر بار جب گروپ کا نام درج کیا جاتا ہے، صارف کا تفصیلات سے دسترس حاصل کرنے کیلئے یوزر فنکشن کو چلا تے ہیں۔ آپ group پیرامیٹر کے ذریعے بھی گروپ کی خصوصیات تک رسائی حاصل کر سکتے ہیں۔

نوٹ: OnGroupName صرف نام دار گروپ کے لئے ہے، راستوں کو نہیں۔

دستاویز

pun (app *App) OnGroupName(handler ...OnGroupNameHandler)

OnListen (سنواری ہک)

OnListen ہک تفصیلات، Listen، ListenTLS، یا Listener عملیات کو کرتے وقت یوزر کی تعین شدہ تفصیلات کو چلانے کے لئے استعمال ہوتی ہے۔

دستاویز

pun (app *App) OnListen(handler ...OnListenHandler)
  • سنواری کی مثال
app := fiber.New(fiber.Config{
  DisableStartupMessage: true,
})

app.Hooks().OnListen(func(listenData fiber.ListenData) خرابی {
  اگر fiber.IsChild() {
      واپس nil
  }
  تشکیل := "http"
  اگر listenData.TLS {
    scheme = "https"
  }
  log.Println(scheme + "://" + listenData.Host + ":" + listenData.Port)
  واپس nil
})

app.Listen(":5000")

OnFork (فورک ہک)

OnFork ہک تفصیلات، فورک عملیات کو کرتے وقت یوزر کی تعین شدہ تفصیلات کو چلانے کے لئے استعمال ہوتی ہے۔

دستاویز

pun (app *App) OnFork(handler ...OnForkHandler)

OnShutdown (بندش ہک)

OnShutdown ہک تفصیلات، بندش عملیات کو کرتے وقت یوزر کی تعین شدہ تفصیلات کو چلانے کے لئے استعمال ہوتی ہے۔

دستاویز

pun (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 application's mount path: "+parent.MountPath())
        // ...

        return nil
    })

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

// نتیجہ:
// ابو درخواست کا ماؤنٹ پیتھ: 

نوٹ: OnName/OnRoute/OnGroup/OnGroupName ہکس ماؤنٹنگ کے لئے حساس ہیں۔ اگر آپ ان راستوں کا استعمال ایک ذیلی درخواست پر کریں اور اسے ماؤنٹ کریں، تو راستوں اور گروپات کے پیٹھ میں ماؤنٹ کا پریفکس شروع ہو جائے گا۔