গো ফাইবার ফ্রেমওয়ার্কে বিভিন্ন অনুরোধ পরামিতি নিয়ে সম্পর্কিত

সহজ উদাহরণ

ফাইবার ফ্রেমওয়ার্কে সবগুলি অনুরোধ পরামিতি কনটেক্স্ট অবজেক্ট সি টেক্স থেকে পেতে হয়।

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("*", "ডিফল্ট মান")  // দ্বিতীয় প্যারামিটার দিয়ে ডিফল্ট মান সেট করা যায়
})

ইন্ট টাইপ রুট প্যারামিটার পেতে

// GET http://example.com/user/123
app.Get("/user/:id", func(c *fiber.Ctx) error {
  id, err := c.ParamsInt("id") // int 123 এবং কোন ত্রুটি নেই

  // ...
})

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"]          // ""
    // ...
})

একটি স্ট্রাক্চার অবজেক্টে কুয়েরি প্যারামিটার বাইন্ড করার জন্য

// প্যারামিটার গ্রহণের জন্য একটি স্ট্রাক্চার ডিফাইন করুন
// বাইন্ড করার জন্য প্যারামিটার নাম নির্ধারণ করার জন্য query ট্যাগটি ব্যবহার করুন
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 {
  // ফর্ম ফিল্ড "নাম" থেকে প্রথম মানটি পান:
  c.FormValue("name")
  // => "john" বা যদি এটি বিদ্যমান না থাকে তাহলে ""

  // ...
})
## বডি প্যারামিটার হ্যান্ডলিং

এটি প্রধানত POST/PUT রিকোয়েস্ট প্রসেস করার জন্য ব্যবহৃত এবং JSON, XML এবং ফর্ম প্যারামিটার সমর্থন করে।

```go
// প্যারামিটার গ্রহণ করার জন্য স্ট্রাক্চার ডিফাইন করুন, এবং json, xml, এবং form ট্যাগ দিয়ে আপনি যে প্যারামিটার ফিল্ড গ্রহণ করতে চান তার নাম ডিফাইন করুন
// প্রয়োজন মতো 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)

    // BodyParser ব্যবহার করুন যাতে প্যারামিটারগুলি 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 {
  // Raw বডি ডেটা পেতে BodyRaw ব্যবহার করুন
  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"
  // ...
})