1
0
mirror of https://github.com/gofiber/fiber.git synced 2025-02-21 20:13:22 +00:00
fiber/.github/README_he.md
2020-09-15 20:32:37 +02:00

35 KiB
Raw Blame History

Fiber

Fiber היא web framework בהשראת Express הבנויה על גבי Fasthttp, מנוע ה-HTTP המהיר ביותר עבור Go. נועדה להקל על העניינים למען פיתוח מהיר, ללא הקצאות זכרון ולוקחת ביצועים בחשבון.

התחלה מהירה

package main

import "github.com/gofiber/fiber/v2"

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

	app.Get("/", func(c *fiber.Ctx) error {
		return c.SendString("Hello, World 👋!")
	})

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

🤖 מדדים

הבדיקות מבוצעות על ידי TechEmpower ו-Go Web. אם אתם רוצים לראות את כל התוצאות, אנא בקרו ב-Wiki שלנו.

⚙️ התקנה

קודם כל, הורידו והתקינו את Go. נדרשת גרסה 1.14 ומעלה.

ההתקנה מתבצעת באמצעות הפקודה go get:

go get github.com/gofiber/fiber/v2

🎯 יכולות

💡 פילוסופיה

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) error {
		msg := fmt.Sprintf("Hello, %s 👋!", c.Params("name"))
		return c.SendString(msg) // => Hello john 👋!
	})

	// GET /john/75
	app.Get("/:name/:age/:gender?", func(c *fiber.Ctx) error {
		msg := fmt.Sprintf("👴 %s is %s years old", c.Params("name"), c.Params("age"))
		return c.SendString(msg) // => 👴 john is 75 years old
	})

	// 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 /flights/LAX-SFO
	app.Get("/flights/:from-:to", func(c *fiber.Ctx) error {
		msg := fmt.Sprintf("💸 From: %s, To: %s", c.Params("from"), c.Params("to"))
		return c.SendString(msg) // => 💸 From: LAX, To: SFO
	})

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

	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"))
}

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

	// Match any route
	app.Use(func(c *fiber.Ctx) error {
		fmt.Println("🥇 First handler")
		return c.Next()
	})

	// Match all routes starting with /api
	app.Use("/api", func(c *fiber.Ctx) error {
		fmt.Println("🥈 Second handler")
		return c.Next()
	})

	// GET /api/register
	app.Get("/api/list", func(c *fiber.Ctx) error {
		fmt.Println("🥉 Last handler")
		return c.SendString("Hello, World 👋!")
	})

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

📚 הצג דוגמאות קוד נוספות

Views engines

📖 Settings 📖 Engines 📖 Render

Fiber defaults to the html/template when no view engine is set.

If you want to execute partials or use a different engine like amber, handlebars, mustache or pug etc..

Checkout our Template package that support multiple view engines.

package main

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

func main() {
	// You can setup Views engine before initiation app:
	app := fiber.New(fiber.Config{
		Views: pug.New("./views", ".pug"),
	})

	// And now, you can call template `./views/home.pug` like this:
	app.Get("/", func(c *fiber.Ctx) error {
		return c.Render("home", fiber.Map{
			"title": "Homepage",
			"year":  1999,
		})
	})

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

קיבוץ routes ל-chains

📖 קבוצות

func middleware(c *fiber.Ctx) error {
	fmt.Println("Don't mind me!")
	return c.Next()
}

func handler(c *fiber.Ctx) error {
	return c.SendString(c.Path())
}

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

	// Root API route
	api := app.Group("/api", middleware) // /api

	// API v1 routes
	v1 := api.Group("/v1", middleware) // /api/v1
	v1.Get("/list", handler)           // /api/v1/list
	v1.Get("/user", handler)           // /api/v1/user

	// API v2 routes
	v2 := api.Group("/v2", middleware) // /api/v2
	v2.Get("/list", handler)           // /api/v2/list
	v2.Get("/user", handler)           // /api/v2/user

	// ...
}

Middleware של לוגים

📖 Logger

package main

import (
	"log"

	"github.com/gofiber/fiber/v2"
	"github.com/gofiber/fiber/v2/middleware/logger"
)

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

	app.Use(logger.New())

	// ...

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

שיתוף משאבים בין מקורות (CORS)

📖 CORS

import (
	"log"

	"github.com/gofiber/fiber/v2"
	"github.com/gofiber/fiber/v2/middleware/cors"
)

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

	app.Use(cors.New())

	// ...

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

בדוק את ה-CORS על ידי העברת כל domain ב-header של Origin:

curl -H "Origin: http://example.com" --verbose http://localhost:3000

תגובת 404 מותאמת אישית

📖 שיטות HTTP

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

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

	app.Get("/demo", func(c *fiber.Ctx) error {
		return c.SendString("This is a demo!")
	})

	app.Post("/register", func(c *fiber.Ctx) error {
		return c.SendString("Welcome!")
	})

	// Last middleware to match anything
	app.Use(func(c *fiber.Ctx) error {
		return c.SendStatus(404)
		// => 404 "Not Found"
	})

	log.Fatal(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) error {
		return c.JSON(&User{"John", 20})
		// => {"name":"John", "age":20}
	})

	app.Get("/json", func(c *fiber.Ctx) error {
		return c.JSON(fiber.Map{
			"success": true,
			"message": "Hi John!",
		})
		// => {"success":true, "message":"Hi John!"}
	})

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

WebSocket Upgrade

📖 Websocket

import (
    "github.com/gofiber/fiber/v2"
    "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
      }
    }
  }))

  log.Fatal(app.Listen(":3000"))
  // ws://localhost:3000/ws
}

Middleware של התאוששות

📖 התאוששות

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

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

	app.Use(recover.New())

	app.Get("/", func(c *fiber.Ctx) error {
		panic("normally this would crash your app")
	})

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

🧬 Internal Middleware

Here is a list of middleware that are included within the Fiber framework.

Middleware Description
basicauth Basic auth middleware provides an HTTP basic authentication. It calls the next handler for valid credentials and 401 Unauthorized for missing or invalid credentials.
compress Compression middleware for Fiber, it supports deflate, gzip and brotli by default.
cors Enable cross-origin resource sharing CORS with various options.
csrf Protect from CSRF exploits.
filesystem FileSystem middleware for Fiber, special thanks and credits to Alireza Salary
favicon Ignore favicon from logs or serve from memory if a file path is provided.
limiter Rate-limiting middleware for Fiber. Use to limit repeated requests to public APIs and/or endpoints such as password reset.
logger HTTP request/response logger.
pprof Special thanks to Matthew Lee @mthli
recover Recover middleware recovers from panics anywhere in the stack chain and handles the control to the centralized ErrorHandler.

🧬 External Middleware

Here is a list of middleware that are included within the Fiber framework.

Middleware Description
adaptor Converter for net/http handlers to/from Fiber request handlers, special thanks to @arsmn!
helmet Helps secure your apps by setting various HTTP headers.
jwt JWT returns a JSON Web Token JWT auth middleware.
keyauth Key auth middleware provides a key based authentication.
rewrite Rewrite middleware rewrites the URL path based on provided rules. It can be helpful for backward compatibility or just creating cleaner and more descriptive links.
session This session middleware is build on top of fasthttp/session by @savsgio MIT. Special thanks to @thomasvvugt for helping with this middleware.
template This package contains 8 template engines that can be used with Fiber v1.10.x Go version 1.13 or higher is required.
websocket Based on Fasthttp WebSocket for Fiber with Locals support!

🌱 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!

👍 לתרום

אם אתם רוצים לומר תודה או/ו לתמוך בפיתוח הפעיל של Fiber:

  1. תוסיפו GitHub Star לפרויקט.
  2. צייצו לגבי הפרויקט בטוויטר שלכם.
  3. כתבו ביקורת או מדריך ב-Medium, Dev.to או בבלוג האישי שלכם.
  4. תמכו בפרויקט על ידי תרומת כוס קפה.

תומכים

Fiber היא פרויקט קוד פתוח שתשלום חשובונתיו מסתמך על תרומות, כגון שם ה-domain שלנו, gitbook, netlify ו-serverless hosting. אם אתם רוצים לתמוך ב-Fiber, אתם יכולים קנו קפה כאן.

משתמש תרומה
@destari x 10
@dembygenesis x 5
@thomasvvugt x 5
@hendratommy x 5
@ekaputra07 x 5
@jorgefuertes x 5
@candidosales x 5
@l0nax x 3
@ankush x 3
@bihe x 3
@justdave x 3
@koddr x 1
@lapolinar x 1
@diegowifi x 1
@ssimk0 x 1
@raymayemir x 1
@melkorm x 1
@marvinjwendt x 1
@toishy x 1

💻 תורמי קוד

Code Contributors

Stargazers

Stargazers over time

⚠️ רישיון

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).

רישיונות של ספריות צד שלישי