Fiber को इंटरनेट पर सबसे लोकप्रिय Web फ्रेमवर्क Express से प्रेरित किया गया है। हम Express की उपयोगिता और Go के कच्चे प्रदर्शन को मिलाते हैं। यदि आपने Node.js का उपयोग करके कभी भी Web एप्लिकेशन बनाया है (Express या समान फ्रेमवर्क का उपयोग करते हुए), तो बहुत से विधान और सिद्धांत आपको बहुत ही सरल लगने चाहिए।

त्वरित प्रारंभ

स्थापना

सुनिश्चित करें कि आपके पास गो 1.17 या उच्च संस्करण स्थापित है।

अपने परियोजना को प्रारंभ करें एक फ़ोल्डर बनाकर और फिर फ़ोल्डर के अंदर जाकर go mod init github.com/your/repo चलाकर परियोजना को आरंभ करें, फिर go get कमांड का उपयोग करके Fiber को स्थापित करें:

go get -u github.com/gofiber/fiber/v2

Hello World

package main

// फाइबर पैकेज को इंपोर्ट करें
import "github.com/gofiber/fiber/v2"

func main() {
    // फाइबर ऍप को परिभाषित करें
    app := fiber.New()

    // http रूट को परिभाषित करें
    app.Get("/", func(c *fiber.Ctx) error {
        // एक स्ट्रिंग के रूप में हैलो वर्ल्ड लौटाएं
        return c.SendString("नमस्ते, दुनिया ?!")
    })

    // पोर्ट 3000 पर सुनें
    app.Listen(":3000")
}

http://localhost:3000/ के माध्यम से पहुंचें।

मूल रूटिंग

Fiber मूल रूटिंग उदाहरण

func main() {
    app := fiber.New()

    // GET /api/register
    app.Get("/api/*", func(c *fiber.Ctx) error {
        msg := fmt.Sprintf("✋ %s", c.Params("*"))
        return c.SendString(msg) // => ✋ register
    })

    // GET /flights/LAX-SFO
    app.Get("/flights/:from-:to", func(c *fiber.Ctx) error {
        msg := fmt.Sprintf("? से: %s, को: %s", c.Params("from"), c.Params("to"))
        return c.SendString(msg) // => ? से: LAX, को: SFO
    })

    // GET /dictionary.txt
    app.Get("/:file.:ext", func(c *fiber.Ctx) error {
        msg := fmt.Sprintf("? %s.%s", c.Params("file"), c.Params("ext"))
        return c.SendString(msg) // => ? dictionary.txt
    })

    // GET /john/75
    app.Get("/:name/:age/:gender?", func(c *fiber.Ctx) error {
        msg := fmt.Sprintf("? %s %s वर्ष के हैं", c.Params("name"), c.Params("age"))
        return c.SendString(msg) // => ? जॉन 75 वर्ष के हैं
    })

    // GET /john
    app.Get("/:name", func(c *fiber.Ctx) error {
        msg := fmt.Sprintf("नमस्ते, %s ?!", c.Params("name"))
        return c.SendString(msg) // => नमस्ते जॉन ?!
    })

    log.Fatal(app.Listen(":3000"))
}

स्थिर फ़ाइल सेवा

स्थापित फ़ाइल सेवा

func main() {
    app := fiber.New()

    app.Static("/", "./public")
    // => http://localhost:3000/js/script.js
    // => http://localhost:3000/css/style.css

    app.Static("/prefix", "./public")
    // => http://localhost:3000/prefix/js/script.js
    // => http://localhost:3000/prefix/css/style.css

    app.Static("*", "./public/index.html")
    // => http://localhost:3000/any/path/shows/index/html

    log.Fatal(app.Listen(":3000"))
}

मिडलवेयर

मध्यमवर्ती के माध्यम से HTTP अनुरोधों को संभालने की क्षमता बढ़ाएँ।

func main() {
    app := fiber.New()

    // किसी भी रूट से मिलता जुलता हो, यहां एक सीमांत समाधान का उपयोग करके मिडलवेयर को अनुकूलित करें
    app.Use(func(c *fiber.Ctx) error {
        fmt.Println("? पहला हैंडलर")
        // अगली मिडलवेयर या रूट फ़ंक्शन को संभालने के लिए जारी रखें
        return c.Next()
    })

    // /api से प्रारंभ होने वाले रूट्स को मिलाना
    app.Use("/api", func(c *fiber.Ctx) error {
        fmt.Println("? दूसरा हैंडलर")
        return c.Next()
    })
    
    // अपशिष्ट को संभालने के लिए तैयार निर्मित मिडलवेयर का उपयोग करें
    app.Use(recover.New())

    // GET /api/register
    app.Get("/api/list", func(c *fiber.Ctx) error {
        fmt.Println("? अंतिम हैंडलर")
        return c.SendString("नमस्ते, दुनिया ?!")
    })

    log.Fatal(app.Listen(":3000"))
}

टेम्पलेट इंजन

यदि टेम्पलेट इंजन सेट नहीं किया गया है, तो Fiber html/template का उपयोग करने के लिए डिफ़ॉल्ट करता है।

package main

import (
    "github.com/gofiber/fiber/v2"
    "github.com/gofiber/template/pug"
)

func main() {
    // टेम्पलेट इंजन सेट करें
    app := fiber.New(fiber.Config{
        Views: pug.New("./views", ".pug"),
    })

    app.Get("/", func(c *fiber.Ctx) error {
        // fiber.map टेम्पलेट पैरामीटर का उपयोग करके ./views/home.pug टेम्पलेट को रेंडर करें
        return c.Render("home", fiber.Map{
            "title": "मुखपृष्ठ",
            "year":  1999,
        })
    })

    log.Fatal(app.Listen(":3000"))
}

Cross-Origin Resource Sharing (CORS) Middleware

Fiber में CORS के लिए मिडलवेयर, CORS हमले से बचने के लिए विभिन्न विकल्पों के साथ क्रॉस-उत्सर्जन संसाधन साझा करने को सक्षम कर सकता है।

import (
    "log"
    "github.com/gofiber/fiber/v2"
    "github.com/gofiber/fiber/v2/middleware/cors"
)

func main() {
    app := fiber.New()

    // डिफ़ॉल्ट CORS विन्यास
    app.Use(cors.New())

    // या निश्चित डोमेन से अनुरोधों को अनुमति देने के लिए CORS पैरामीटर कस्टमाइज़ करें
    app.Use(cors.New(cors.Config{
        AllowOrigins: "https://www.tizi365.com, https://tizi365.com",
        AllowHeaders:  "Origin, Content-Type, Accept",
    }))

    log.Fatal(app.Listen(":3000"))
}

Origin हेडर में किसी भी डोमेन को भेजकर CORS की जांच करें:

curl -H "Origin: https://www.tizi365.com" --verbose http://localhost:3000

कस्टम 404 प्रतिक्रिया

func main() {
    app := fiber.New()

    app.Static("/", "./public")

    app.Get("/demo", func(c *fiber.Ctx) error {
        return c.SendString("यह एक डेमो है!")
    })

    app.Post("/register", func(c *fiber.Ctx) error {
        return c.SendString("स्वागत है!")
    })

    // अंतिम संदर्भित मिडलवेयर सभी अनुरोधों, विशेषकर 404, से मेल खाएगी
    app.Use(func(c *fiber.Ctx) error {
        // अन्य हैंडलिंग तर्क
        // 404 स्थिति वापस भेजें
        return c.SendStatus(404)
        // => 404 "नहीं मिला"
    })

    log.Fatal(app.Listen(":3000"))
}

JSON प्रतिक्रिया

Fiber द्वारा JSON डेटा वापसी का उदाहरण।

type User struct {
    Name string `json:"name"`
    Age  int    `json:"age"`
}

func main() {
    app := fiber.New()

    app.Get("/user", func(c *fiber.Ctx) error {
        return c.JSON(&User{"जॉन", 20})
        // => {"name":"जॉन", "age":20}
    })

    app.Get("/json", func(c *fiber.Ctx) error {
        return c.JSON(fiber.Map{
            "success": true,
            "message": "नमस्ते जॉन!",
        })
        // => {"success":true, "message":"नमस्ते जॉन!"}
    })

    log.Fatal(app.Listen(":3000"))
}

बचाव मिडलवेयर

प्रोग्राम क्रैश और बंद होने से निवारण के लिए पैनिक त्रुटियों को रोकने के लिए।

import (
    "github.com/gofiber/fiber/v2"
    "github.com/gofiber/fiber/v2/middleware/recover"
)

func main() {
    app := fiber.New()
	// पैनिक बचाव के लिए पैनिक मिडलवेयर का उपयोग करें
    app.Use(recover.New())

    app.Get("/", func(c *fiber.Ctx) error {
        panic("सामान्य रूप से यह आपके ऐप को क्रैश कर देगा")
    })

    log.Fatal(app.Listen(":3000"))
}

मापदंड

[

सीमाएँ

  • Fiber में असुरक्षित सुविधाओं का उपयोग के कारण, इसे नवीनतम गो संस्करणों के साथ असंगत हो सकता है। Fiber 2.40.0 का परीक्षण गो संस्करण 1.17 से 1.21 तक किया गया है।
  • Fiber net/http इंटरफ़ेस के साथ असंगत है। इसका मतलब है कि आप gqlgen, go-swagger या net/http पारिस्थितिकी सिस्टम के किसी भी और परियोजनाओं का सीधा उपयोग नहीं कर सकते।