22 KiB
Fiber היא web framework בהשראת Express הבנויה על גבי Fasthttp, מנוע ה-HTTP המהיר ביותר עבור Go.
נועדה להקל על העניינים למען פיתוח מהיר, ללא הקצאות זכרון ולוקחת ביצועים בחשבון.
⚡️ התחלה מהירה
package main
import "github.com/gofiber/fiber"
func main() {
app := fiber.New()
app.Get("/", func(c *fiber.Ctx) {
c.Send("Hello, World!")
})
app.Listen(3000)
}
⚙️ התקנה
קודם כל, הורידו והתקינו את Go. נדרשת גרסה 1.11
ומעלה.
ההתקנה מתבצעת באמצעות הפקודה go get
:
go get -u github.com/gofiber/fiber
🤖 מדדים
הבדיקות מבוצעות על ידי TechEmpower ו-Go Web. אם אתם רוצים לראות את כל התוצאות, אנא בקרו ב-Wiki שלנו.
🎯 יכולות
- ניתוב רובסטי
- הנגשת קבצים סטטיים
- ביצועים גבוהים במיוחד
- צורך כמות זכרון קטנה
- נקודות קצה עבור API
- תמיכה ב-Middleware & Next
- תכנות מהיר של צד שרת
- מנועי תבניות
- תמיכה ב-WebSocket
- הגבלת קצבים ובקשות
- תורגם ל-12 שפות אחרות
- והרבה יותר, חקור את Fiber
💡 פילוסופיה
gophers חדשים שעושים את המעבר מ-Node.js ל-Go מתמודדים עם עקומת למידה לפני שהם יכולים להתחיל לבנות את יישומי האינטרנט או המיקרו-שירותים שלהם.
Fiber כ-web framework, נוצרה עם רעיון המינימליזם ועוקבת אחרי הדרך של UNIX, כך ש-gophers חדשים יוכלו להיכנס במהירות לעולם של Go עם קבלת פנים חמה ואמינה.
Fiber נוצרה בהשראת Express, ה-web framework הפופולרית ביותר ברחבי האינטרנט. שילבנו את הקלות של Express והביצועים הגולמיים של Go. אם אי-פעם מימשתם יישום web ב-Node.js (באמצעות Express או דומיו), אז הרבה מהפונקציות והעקרונות ייראו לכם מאוד מוכרים.
אנחנו מקשיבים למשתמשים שלנו ב-issues (ובכל רחבי האינטרנט) כדי ליצור web framework מהירה, גמישה, וידידותית בשפת Go עבור כל משימה, תאריך יעד וכישורי מפתח! בדיוק כמו ש-Express מבצע בעולם של JavaScript.
👀 דוגמאות
להלן כמה מהדוגמאות הנפוצות.
אם ברצונכם לראות דוגמאות קוד נוספות, אנא בקרו במאגר המתכונים שלנו או בקרו בתיעוד ה-API שלנו.
ניתוב
📖 ניתוב
func main() {
app := fiber.New()
// GET /john
app.Get("/:name", func(c *fiber.Ctx) {
fmt.Printf("Hello %s!", c.Params("name"))
// => Hello john!
})
// GET /john
app.Get("/:name/:age?", func(c *fiber.Ctx) {
fmt.Printf("Name: %s, Age: %s", c.Params("name"), c.Params("age"))
// => Name: john, Age:
})
// GET /api/register
app.Get("/api/*", func(c *fiber.Ctx) {
fmt.Printf("/api/%s", c.Params("*"))
// => /api/register
})
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
app.Listen(3000)
}
Middleware & Next
📖 Middleware
📖 Next
func main() {
app := fiber.New()
// Match any route
app.Use(func(c *fiber.Ctx) {
fmt.Println("First middleware")
c.Next()
})
// Match all routes starting with /api
app.Use("/api", func(c *fiber.Ctx) {
fmt.Println("Second middleware")
c.Next()
})
// GET /api/register
app.Get("/api/list", func(c *fiber.Ctx) {
fmt.Println("Last middleware")
c.Send("Hello, World!")
})
app.Listen(3000)
}
📚 הצג דוגמאות קוד נוספות
מנועי תבניות
Fiber תומך כברירת מחדל במנוע התבניות של Go.
אבל אם ברצונכם להשתמש במנוע תבניות אחר כמו amber, handlebars, mustache או pug.
אתם יכולים להשתמש בMiddleware של התבניות שלנו.
package main
import (
"github.com/gofiber/fiber"
"github.com/gofiber/template"
)
func main() {
// You can setup template engine before initiation app:
app := fiber.New(&fiber.Settings{
TemplateEngine: template.Mustache(),
TemplateFolder: "./views",
TemplateExtension: ".tmpl",
})
// OR after initiation app at any convenient location:
app.Settings.TemplateEngine = template.Mustache()
app.Settings.TemplateFolder = "./views"
app.Settings.TemplateExtension = ".tmpl"
// And now, you can call template `./views/home.tmpl` like this:
app.Get("/", func(c *fiber.Ctx) {
c.Render("home", fiber.Map{
"title": "Homepage",
"year": 1999,
})
})
// ...
}
קיבוץ routes ל-chains
📖 קבוצות
func main() {
app := fiber.New()
// Root API route
api := app.Group("/api", cors()) // /api
// API v1 routes
v1 := api.Group("/v1", mysql()) // /api/v1
v1.Get("/list", handler) // /api/v1/list
v1.Get("/user", handler) // /api/v1/user
// API v2 routes
v2 := api.Group("/v2", mongodb()) // /api/v2
v2.Get("/list", handler) // /api/v2/list
v2.Get("/user", handler) // /api/v2/user
// ...
}
Middleware של לוגים
📖 Logger
import (
"github.com/gofiber/fiber"
"github.com/gofiber/logger"
)
func main() {
app := fiber.New()
// Optional logger config
config := logger.Config{
Format: "${time} - ${method} ${path}\n",
TimeFormat: "Mon, 2 Jan 2006 15:04:05 MST",
}
// Logger with config
app.Use(logger.New(config))
app.Listen(3000)
}
שיתוף משאבים בין מקורות (CORS)
📖 CORS
import (
"github.com/gofiber/fiber"
"github.com/gofiber/cors"
)
func main() {
app := fiber.New()
// CORS with default config
app.Use(cors.New())
app.Listen(3000)
}
בדוק את ה-CORS על ידי העברת כל domain ב-header של Origin
:
curl -H "Origin: http://example.com" --verbose http://localhost:3000
תגובת 404 מותאמת אישית
func main() {
app := fiber.New()
app.Static("/public")
app.Get("/demo", func(c *fiber.Ctx) {
c.Send("This is a demo!")
})
app.Post("/register", func(c *fiber.Ctx) {
c.Send("Welcome!")
})
// Last middleware to match anything
app.Use(func(c *fiber.Ctx) {
c.SendStatus(404)
// => 404 "Not Found"
})
app.Listen(3000)
}
תגובת JSON
📖 JSON
type User struct {
Name string `json:"name"`
Age int `json:"age"`
}
func main() {
app := fiber.New()
app.Get("/user", func(c *fiber.Ctx) {
c.JSON(&User{"John", 20})
// => {"name":"John", "age":20}
})
app.Get("/json", func(c *fiber.Ctx) {
c.JSON(fiber.Map{
"success": true,
"message": "Hi John!",
})
// => {"success":true, "message":"Hi John!"}
})
app.Listen(3000)
}
WebSocket Upgrade
import (
"github.com/gofiber/fiber"
"github.com/gofiber/websocket"
)
func main() {
app := fiber.New()
app.Get("/ws", websocket.New(func(c *websocket.Conn) {
for {
mt, msg, err := c.ReadMessage()
if err != nil {
log.Println("read:", err)
break
}
log.Printf("recv: %s", msg)
err = c.WriteMessage(mt, msg)
if err != nil {
log.Println("write:", err)
break
}
}
}))
app.Listen(3000)
// ws://localhost:3000/ws
}
Middleware של התאוששות
📖 התאוששות
import (
"github.com/gofiber/fiber"
"github.com/gofiber/recover"
)
func main() {
app := fiber.New()
// Optional recover config
config := recover.Config{
Handler: func(c *fiber.Ctx, err error) {
c.SendString(err.Error())
c.SendStatus(500)
},
}
// Logger with custom config
app.Use(recover.New(config))
app.Listen(3000)
}
🧬 Middlewares זמינים
למען עבודה קלה וברורה יותר, שמנו את ה-middleware תחת repositories נפרדים:
- Basic Authentication
- Key Authentication
- Compression
- Request ID
- WebSocket
- Rewrite
- Recover
- Limiter
- Session
- Logger
- Helmet
- Embed
- PPROF
- CORS
- CSRF
- JWT
🌱 Third Party Middlewares
This is a list of middlewares that are created by the Fiber community, please create a PR if you want to see yours!
💬 מדיה
- Welcome to Fiber — an Express.js styled web framework written in Go with ❤️ — 03 Feb 2020
- Fiber released v1.7! 🎉 What's new and is it still fast, flexible and friendly? — 21 Feb 2020
- 🚀 Fiber v1.8. What's new, updated and re-thinked? — 03 Mar 2020
- Is switching from Express to Fiber worth it? 🤔 — 01 Apr 2020
- Creating Fast APIs In Go Using Fiber — 07 Apr 2020
- Building a Basic REST API in Go using Fiber - 23 Apr 2020
- 🌎 Create a travel list app with Go, Fiber, Angular, MongoDB and Google Cloud Secret Manager - 25 Apr 2020
👍 לתרום
אם אתם רוצים לומר תודה או/ו לתמוך בפיתוח הפעיל של Fiber
:
- תוסיפו GitHub Star לפרויקט.
- צייצו לגבי הפרויקט בטוויטר שלכם.
- כתבו ביקורת או מדריך ב-Medium, Dev.to או בבלוג האישי שלכם.
- עזרו לנו לתרגם את ה-
README
הזה לשפה אחרת. - תמכו בפרויקט על ידי תרומת כוס קפה.
☕ תומכים
Fiber היא פרויקט קוד פתוח שתשלום חשובונתיו מסתמך על תרומות, כגון שם ה-domain שלנו, gitbook, netlify ו-serverless hosting. אם אתם רוצים לתמוך ב-Fiber, אתם יכולים ☕ קנו קפה כאן
משתמש | תרומה | |
---|---|---|
@thomasvvugt | ☕ x 5 | |
@ekaputra07 | ☕ x 5 | |
@candidosales | ☕ x 5 | |
@bihe | ☕ x 3 | |
@justdave | ☕ x 3 | |
@koddr | ☕ x 1 | |
@diegowifi | ☕ x 1 | |
@ssimk0 | ☕ x 1 | |
@raymayemir | ☕ x 1 | |
@melkorm | ☕ x 1 | |
@marvinjwendt | ☕ x 1 | |
@toishy | ☕ x 1 |
💻 תורמי קוד
⚠️ רישיון
Copyright (c) 2019-present Fenny and Contributors. Fiber
is free and open-source software licensed under the MIT License. Official logo was created by Vic Shóstak and distributed under Creative Commons license (CC BY-SA 4.0 International).