1
0
mirror of https://github.com/gofiber/fiber.git synced 2025-02-24 04:24:02 +00:00
fiber/.github/README_ru.md
2020-06-15 04:22:22 +01:00

34 KiB
Raw Blame History

Fiber

Fiber — это веб фреймворк, который был вдохновлен 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)
}

🤖 Бенчмарки

Тестирование проводилось с помощью TechEmpower и Go Web. Если вы хотите увидеть все результаты, пожалуйста, посетите наш Wiki.

⚙️ Установка

Прежде всего, скачайте и установите Go. Версия 1.11 или выше.

Установка выполняется с помощью команды go get:

go get -u github.com/gofiber/fiber

🎯 Особенности

💡 Философия

Новые Go-программисты, которые переключаются с Node.js на Go, имеют дело с очень извилистой кривой обучения, прежде чем они смогут начать создавать свои веб-приложения или микросервисы. Fiber, как веб-фреймворк, был создан с идеей минимализма и следовал принципу UNIX, так что новички смогут быстро войти в мир Go без особых проблем.

Fiber вдохновлен Express, самым популярным веб фреймворком в Интернете. Мы объединили простоту Express и чистую производительность Go. Если вы когда-либо реализовывали веб-приложение на Node.js (с использованием Express или аналогичного фреймворка), то многие методы и принципы покажутся вам очень знакомыми.

Мы прислушиваемся к нашим пользователям в issues, Discord канале и в остальном Интернете, чтобы создать быстрый, гибкий и дружелюбный веб фреймворк на Go для любых задач, дедлайнов и уровней разработчиков! Как это делает Express в мире JavaScript.

👀 Примеры

Ниже перечислены некоторые из распространенных примеров. Если вы хотите увидеть больше примеров кода, пожалуйста, посетите наш репозиторий рецептов или документацию по API.

Routing

📖 Routing

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

Serve static files

📖 Static

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)
}
📚 Показать больше примеров кода

Template engines

📖 Settings
📖 Template Engines
📖 Render

Fiber defaults to the Go template engine when no Template engine is set.

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

You can use our Template Middleware.

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

func main() {
  // You can setup template engine before initiation app:
  app := fiber.New(&fiber.Settings{
    Templates: pug.New("./views", ".pug"),
  })

  // OR after initiation app at any convenient location:
  app.Settings.Templates = pug.New("./views", ".pug"),

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

  // ...
}

Grouping routes into chains

📖 Group

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

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

Cross-Origin Resource Sharing (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, присвоив домен в заголовок Origin, отличный от localhost:

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

Custom 404 response

📖 HTTP Methods

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 Response

📖 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

📖 Websocket

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
}

Recover middleware

📖 Recover

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 экосистему, мы вынесли middlewares в отдельные репозитории:

🌱 Middlewares от сторонних разработчиков

Это список middlewares, созданных сообществом Fiber. Пожалуйста, создайте PR, если хотите добавить в этот список свой или известный вам middleware для веб фреймворка Fiber!

💬 Медиа

👍 Помощь проекту

Если вы хотите сказать спасибо и/или поддержать активное развитие Fiber:

  1. Добавьте GitHub Star в проект.
  2. Напишите о проекте в вашем Twitter.
  3. Сделайте обзор фреймворка на Medium, Dev.to или в личном блоге.
  4. Помогите перевести нашу API документацию на платформе Crowdin Crowdin
  5. Поддержите проект, купив чашку кофе.

Поддержка проекта

Fiber — это проект с открытым исходным кодом, который работает на пожертвования для оплаты счетов, например, нашего доменного имени, GitBook, Netlify и serverless-хостинга.

Если вы хотите поддержать, то купите чашку кофе.

Пользователи Пожертвования
@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

⚠️ License

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

Third-party library licenses