گو فاےبر فریم ورک میں مختلف درخواست پیرامیٹرز کا حصول
سادہ مثال
فایبر فریم ورک میں تمام درخواست پیرامیٹرز کو کنٹیکسٹ آبجیکٹ Ctx
کے ذریعے حاصل کیا جاتا ہے۔
app.Get("/user/:name?", func(c *fiber.Ctx) error {
// رزلٹ میں معنی خیز میتھاڈ کو استعمال کرکے سیکسیس کی میتھاڈ کو کال کرکے Ctx پیرامیٹر کے ذریعے پیرامیٹر حاصل کیے جاتے ہیں
// یہاں، نام پیرامیٹر Params کے ذریعے حاصل کیا جاتا ہے
return c.SendString(c.Params("name"))
})
روٹ پیرامیٹرز کا حصول
URL پاتھ سے پیرامیٹرز حاصل کرنا
// GET http://example.com/user/fenny
app.Get("/user/:name", func(c *fiber.Ctx) error {
c.Params("name") // "fenny"
// ...
})
// GET http://example.com/user/fenny/123
app.Get("/user/*", func(c *fiber.Ctx) error {
c.Params("*") // "fenny/123"
c.Params("*1") // "fenny/123"
c.Params("*", "default value") // دوسرا پیرامیٹر استعمال کرکے ڈیفالٹ قیمت تعین کی جا سکتی ہے
})
Int قسم کے روٹ پیرامیٹرز کا حصول
// GET http://example.com/user/123
app.Get("/user/:id", func(c *fiber.Ctx) error {
id, err := c.ParamsInt("id") // int 123 and no error
// ...
})
GET درخواست کوئری پیرامیٹرز کا حصول
// GET http://example.com/?order=desc&brand=nike
app.Get("/", func(c *fiber.Ctx) error {
c.Query("order") // "desc"
c.Query("brand") // "nike"
// دوسرا پیرامیٹر منسوخ ہونے پر استعمال ہونے والی ڈیفالٹ قیمت تعین کرنے کے لئے، جو پیرامیٹر موجود نہیں ہوگا وہ واپس کر در ہوگی
c.Query("empty", "nike") // "nike"
// ...
})
تمام کوئیری پیرامیٹرز کو واپس کرنا
// GET http://example.com/?name=alex&want_pizza=false&id=
app.Get("/", func(c *fiber.Ctx) error {
m := c.Queries()
m["name"] // "alex"
m["want_pizza"] // "false"
m["id"] // ""
// ...
})
کوئیری پیرامیٹرز کو ایک سٹرکٹ اوبجیکٹ سے بائنڈ کرنا
// پیرامیٹرز کو وصول کرنے کے لئے ایک سٹرکٹ ڈیفائن کریں
// بائنڈ کرنے والے پیرامیٹرز کے نام مخصوص کرنے کے لئے کوئیری ٹیگ کا استعمال کریں
type Person struct {
Name string `query:"name"`
Pass string `query:"pass"`
Products []string `query:"products"`
}
app.Get("/", func(c *fiber.Ctx) error {
// پیرامیٹرز کو وصول کرنے کے لئے ایک سٹرکٹ متغیر ڈیفائن کریں
p := new(Person)
// QueryParser کا استعمال کرکے سٹرکٹ متغیر p کو کوئیری پیرامیٹرز سے بائنڈ کرنا
if err := c.QueryParser(p); err != nil {
return err
}
log.Println(p.Name) // john
log.Println(p.Pass) // doe
log.Println(p.Products) // [shoe, hat]
// ...
})
// ٹیسٹ کرنے کے لئے مندرجہ ذیل curl کمانڈ کو چلائیں
// curl "http://localhost:3000/?name=john&pass=doe&products=shoe,hat"
POST درخواست فارم پیرامیٹرز کا حصول
app.Post("/", func(c *fiber.Ctx) error {
// فارم فیلڈ "name" سے پہلی قیمت حاصل کریں:
c.FormValue("name")
// => "john" or "" اگر یہ موجود نہیں ہوتا
})
باڈی پیرامیٹرز کا منظور
یہ عموماً POST/PUT درخواستوں کے عمل کے لئے استعمال ہوتا ہے اور یہ JSON، XML، اور فارم پیرامیٹرز کو سپورٹ کرتا ہے۔
// پیرامیٹرز کو وصول کرنے کے لئے سٹرکٹ کو مقرر کریں، اور json، xml، اور فارم ٹیگ کے ذریعے وصول کرنا چاہتے ہیں وہ پیرامیٹر فیلڈ نامات کو مقرر کریں
// json، xml، form کو ضرورت کے مطابق منتخب کیا جا سکتا ہے؛ یہ سب کو شامل کرنا ضروری نہیں ہے
type Person struct {
Name string `json:"name" xml:"name" form:"name"`
Pass string `json:"pass" xml:"pass" form:"pass"`
}
app.Post("/", func(c *fiber.Ctx) error {
// پیرامیٹرز کو وصول کرنے کے لئے سٹرکٹ متغیر کو مقرر کریں
p := new(Person)
// بادی پارسر کا استعمال کرکے متغیر p کو بادی پیرامیٹرز سے بائنڈ کرنے کے لئے
if err := c.BodyParser(p); err != nil {
return err
}
log.Println(p.Name) // john
log.Println(p.Pass) // doe
// ...
})
// مختلف قسم کی درخواستوں کے مثالیں؛ JSON فارمیٹ پیرامیٹر درخواستوں کے لئے، یاد رکھیں کہ Content-Type: application/json کو ترتیب دینا
// curl -X POST -H "Content-Type: application/json" --data "{\"name\":\"john\",\"pass\":\"doe\"}" localhost:3000
// curl -X POST -H "Content-Type: application/xml" --data "<login><name>john</name><pass>doe</pass></login>" localhost:3000
// curl -X POST -H "Content-Type: application/x-www-form-urlencoded" --data "name=john&pass=doe" localhost:3000
// curl -X POST -F name=john -F pass=doe http://localhost:3000
// curl -X POST "http://localhost:3000/?name=john&pass=doe"
اسلسلے سے اصل بادی ڈیٹا حاصل کرنے کا طریقہ درج ذیل ہے:
// curl -X POST http://localhost:8080 -d user=john
app.Post("/", func(c *fiber.Ctx) error {
// بادی را کا استعمال کرکے را ماضی ڈیٹا لوٹانا
return c.Send(c.BodyRaw()) // []byte("user=john")
})
درخواست ہیڈرز کے حاصل کرنا
app.Get("/", func(c *fiber.Ctx) error {
c.Get("Content-Type") // "text/plain"
c.Get("CoNtEnT-TypE") // "text/plain"
c.Get("something", "john") // "john"
// ...
})
کلائنٹ کا آئی پی حاصل کرنا
app.Get("/", func(c *fiber.Ctx) error {
c.IP() // "127.0.0.1"
// ...
})
اگر آپ پراکسی یا لوڈ بیلینسر کا استعمال کرکے سرور پر مقرون ہیں تو آپ کو مندرجہ ذیل طریقے کو استعمال کرکے x-forwarded-for ہیڈر کے ذریعے کلائنٹ کا آئی پی حاصل کرنا ہوگا:
app := fiber.New(fiber.Config{
ProxyHeader: fiber.HeaderXForwardedFor,
})
کوکیز پڑھنا
app.Get("/", func(c *fiber.Ctx) error {
// کی مدد سے کوکی کا ارد گرد:
c.Cookies("name") // "john"
c.Cookies("empty", "doe") // "doe"
// ...
})