RESTful API для управления пользовательскими подписками.
- Go 1.25
- chi/v5 — HTTP роутер
- pgx/v5 — драйвер PostgreSQL
- golang-migrate — миграции БД
- Swaggo — Swagger-документация
- Docker / Docker Compose
Базовый путь: /api/v1/subscriptions
| Метод | Путь | Описание |
|---|---|---|
POST |
/api/v1/subscriptions |
Создать подписку |
GET |
/api/v1/subscriptions |
Список подписок (с фильтрацией) |
GET |
/api/v1/subscriptions/total-cost |
Общая стоимость за период |
GET |
/api/v1/subscriptions/{id} |
Получить подписку |
PUT |
/api/v1/subscriptions/{id} |
Обновить подписку |
DELETE |
/api/v1/subscriptions/{id} |
Удалить подписку |
Swagger UI доступен по /swagger/.
docker compose upПриложение будет доступно на http://localhost:8080.
| Переменная | По умолчанию | Описание |
|---|---|---|
SERVER_PORT |
8080 |
Порт HTTP-сервера |
DATABASE_URL |
postgres://postgres:postgres@localhost:5432/subscriptions |
Строка подключения к БД |
MIGRATION_PATH |
file://migrations |
Путь к миграциям |
READ_TIMEOUT_SECONDS |
10 |
Таймаут чтения |
WRITE_TIMEOUT_SECONDS |
10 |
Таймаут записи |
LOG_LEVEL |
info |
Уровень логирования |
Handler (HTTP) → Service (Бизнес-логика) → Repository (База данных)
- handler — обработка HTTP-запросов, валидация, JSON-ответы
- service — бизнес-логика (расширяемая прослойка)
- repository — SQL-запросы, работа с pgx pool
- model — структуры данных и DTO
- middleware — HTTP-логирование и recovery