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 पारिस्थितिकी सिस्टम के किसी भी और परियोजनाओं का सीधा उपयोग नहीं कर सकते।