Документация
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()}
Запуск приложения:
-
Сохраните этот код как
main.go
-
Запустите приложение:
Окно терминала go run main.go -
Откройте браузер и перейдите по адресу
http://localhost:8080/ping
-
Вы увидите:
{"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 от сообщества