TGViewer
Библиотека Go-разработчика | Golang Библиотека Go-разработчика | Golang @goproglib · 24.1K subscribers
Post #7230 2.9K
🔥Автодокументация API в Go: Gin + Swaggo

Вы пишете API на Gin, фронтенд-команда просит документацию, а вы обновляете её вручную в Notion или Confluence. Через неделю доки расходятся с кодом, и начинается хаос. Swaggo решает эту проблему. Вы пишете комментарии прямо в коде, а он генерирует интерактивную документацию по спецификации OpenAPI.

Как это работает

Swaggo парсит специальные комментарии над хендлерами Gin и на их основе собирает swagger.json. Результат можно открыть в браузере через Swagger UI.

Устанавливаем CLI:
go install github.com/swaggo/swag/cmd/swag@latest


Добавляем зависимости в проект:
go get github.com/swaggo/gin-swagger
go get github.com/swaggo/files


Пишем хендлер с аннотациями:
// @Summary Получить профиль пользователя
// @Description Парсит токен из заголовка и возвращает данные пользователя
// @Produce json
// @Success 200 {object} profileResponse
// @Router /api/v2/account/profile [get]
func FetchProfileHandler(c *gin.Context) {
c.JSON(http.StatusOK, gin.H{"status": "ok", "data": "user_data"})
}


Подключаем Swagger UI в роутере:
import (
swaggerFiles "github.com/swaggo/files"
ginSwagger "github.com/swaggo/gin-swagger"
_ "your-project/docs"
)

r := gin.Default()
r.GET("/swagger/*any", ginSwagger.WrapHandler(swaggerFiles.Handler))


Генерируем документацию:
swag init


После этого по адресу /swagger/index.html будет доступна интерактивная страница со всеми эндпоинтами. Фронтенд-команда видит актуальные контракты, может отправлять тестовые запросы прямо из браузера.

Что умеют аннотации

Swaggo поддерживает описание query-параметров, тела запроса, заголовков, кодов ответа и моделей данных. Всё через комментарии над функцией. Пример с параметрами:
// @Summary Список пользователей
// @Param page query int false "Номер страницы" default(1)
// @Param limit query int false "Количество на странице" default(20)
// @Success 200 {array} User
// @Router /api/v2/users [get]


Модели берутся из Go-структур. Если User определён в коде, Swaggo автоматически подтянет его поля в документацию.

Hot reload с Air

При активной разработке удобно, чтобы сервер перезапускался при каждом сохранении файла. Для этого используют Air.

Установка:
go install github.com/air-verse/air@latest


Запуск в корне проекта:
air


Air следит за изменениями в .go файлах, пересобирает и перезапускает сервер. Работает быстро, конфигурируется через .air.toml. В связке с Swaggo можно добавить swag init в команду сборки, и документация будет обновляться вместе с кодом.

Gin отвечает за роутинг и производительность. Swaggo превращает комментарии в OpenAPI-документацию. Air перезапускает сервер при изменениях.

📍 Навигация: Вакансии • Задачи • Собесы • Канал в Max

🐸 Библиотека Go-разработчика

#GoToProduction
  • 👍 8
  • ❤ 4
  • 🥱 3
More from @goproglib
  1. Sep 29, 2026👨‍💻 Библиотека для написания LSP-серверов Написать свой Language Server с нуля на Go сло…
  2. Sep 28, 2026🤔 Вопрос с собеседования по Go Что выведет программа? ❤️ — 1 true / 0 false 🔥 — 1 true /…
  3. Sep 28, 2026👩‍💻 Что на самом деле происходит внутри Go map? После Go 1.24 обычный map внутри работае…
  4. Sep 26, 2026🔥 В Go 1.27 появился portable SIMD До этого SIMD-оптимизации в Go требовали архитектурног…
  5. Sep 25, 2026🤡🤡 📍 Навигация: Вакансии • Задачи • Собесы 🐸 Библиотека Go-разработчика #GoGiggle
  6. Sep 25, 2026💡 Код работает. А data race уже есть В Go можно записать значение в одной горутине, прочи…
Threads Profile ViewerView any public Threads profile without an account.Open ThreadLook →Writing with AI? Make it sound human.Metric37 rewrites AI drafts so they read naturally. Free AI detector, 1,500 words free.Try Metric37 →