Перейти к содержимому

Документация

Gin — это высокопроизводительный HTTP веб-фреймворк, написанный на Go. Он предоставляет API, похожий на Martini, но с значительно лучшей производительностью — до 40 раз быстрее, благодаря httprouter. Gin предназначен для разработки REST API, веб‑приложений и микросервисов, где скорость и продуктивность разработчика имеют решающее значение.

Почему Gin?

Gin сочетает простоту роутинга в стиле Express.js с производительностью Go, что делает его идеальным для:

  • Разработки высокопроизводительных REST API
  • Создания микросервисов с большим количеством одновременных запросов
  • Проектирования веб‑приложений с очень быстрым откликом
  • Быстрого прототипирования веб‑сервисов с минимальными накладными расходами

Ключевые особенности Gin:

  • Роутер без выделения памяти — исключительно эффективный роутинг без аллокаций в heap
  • Высокая производительность — бенчмарки показывают превосходную скорость по сравнению с другими Go‑фреймворками
  • Поддержка middleware — расширяемая система middleware для аутентификации, логирования, CORS и др.
  • Crash-free — встроенный recovery‑middleware защищает сервер от падений при panic
  • Валидация JSON — автоматическая привязка и валидация JSON-запросов/ответов
  • Группировка маршрутов — организация связанных маршрутов и применение общего middleware
  • Управление ошибками — централизованный логгинг и обработка ошибок
  • Встроенный рендеринг — поддержка JSON, XML, HTML‑шаблонов и др.
  • Расширяемость — большое сообщество middleware и плагинов

Начало работы

Предварительные требования

  • Версия Go: Gin требует Go версии 1.23 и выше
  • Базовые знания Go: Знание синтаксиса Go и управления пакетами будет полезно

Установка

С модулями Go достаточно импортировать Gin — Go подтянет пакет автоматически во время сборки:

import "github.com/gin-gonic/gin"

Ваше первое приложение Gin

Ниже приведён пример, демонстрирующий простоту Gin:

package main
import (
"net/http"
"github.com/gin-gonic/gin"
)
func main() {
// Создаём роутер Gin с дефолтным middleware (логгирование и recovery)
r := gin.Default()
// Определяем простой GET‑эндпоинт
r.GET("/ping", func(c *gin.Context) {
// Возвращаем JSON‑ответ
c.JSON(http.StatusOK, gin.H{
"message": "pong",
})
})
// Запускаем сервер на порту 8080 (по умолчанию)
// Сервер слушает на 0.0.0.0:8080 (для Windows — localhost:8080)
r.Run()
}

Запуск приложения:

  1. Сохраните этот код как main.go

  2. Запустите приложение:

    Окно терминала
    go run main.go
  3. Откройте браузер и перейдите по адресу http://localhost:8080/ping

  4. Вы увидите: {"message":"pong"}

Что демонстрирует этот пример:

  • Создание роутера Gin с дефолтным middleware
  • Определение HTTP‑эндпоинтов с простыми функциями‑обработчиками
  • Возврат JSON‑ответов
  • Запуск HTTP‑сервера

Следующие шаги

После запуска первого приложения на Gin изучите ресурсы ниже для дальнейшего обучения:

📚 Учебные ресурсы

  • Быстрый старт Gin — подробное руководство с примерами API и конфигурациями сборки
  • Примеры Gin — готовые примеры, показывающие разные сценарии работы с Gin:
    • Разработка REST API
    • Аутентификация и middleware
    • Загрузка и скачивание файлов
    • Подключение WebSocket
    • Рендеринг шаблонов

Официальные руководства

🔌 Экосистема middleware

Gin обладает развитой экосистемой middleware для популярных задач веб‑разработки. Ознакомьтесь с решениями сообщества:

  • gin-contrib — официальная коллекция middleware, включая:

    • Аутентификация (JWT, Basic Auth, Session)
    • CORS, ограничение скорости, сжатие
    • Логирование, метрики, трассировка
    • Выдача статических файлов, движки шаблонов
  • gin-gonic/contrib — дополнительные middleware от сообщества