Учебный сервис коротких ссылок на Go: REST API поверх chi, PostgreSQL (pgx), миграции через golang-migrate, структурированные логи slog.
cp .env.example .env # заполнить значения
docker compose up --buildСервис поднимется на http://localhost:8080, миграции применяются автоматически при старте.
set -a; source .env; set +a
CONFIG_PATH=config/local.yaml go run ./cmd/appНужен запущенный PostgreSQL на localhost:5432 (можно поднять только базу: docker compose up postgres).
Несекретные настройки (адреса, таймауты) лежат в config/*.yaml, секреты — в .env (не коммитится):
| Переменная | Назначение |
|---|---|
POSTGRES_USER / POSTGRES_PASSWORD / POSTGRES_DB |
доступ к базе |
SRV_USERNAME / SRV_PASSWORD |
Basic Auth для управляющих эндпоинтов |
CONFIG_PATH |
путь к yaml-конфигу окружения |
| Метод и путь | Описание | Auth |
|---|---|---|
POST /short |
создать короткую ссылку ({"url": "...", "alias": "необязательно"}) |
Basic |
GET /short |
список ссылок | Basic |
DELETE /short/{alias} |
удалить ссылку | Basic |
GET /short/{alias} |
редирект на исходный URL | — |
GET /health |
проверка живости | — |
Примеры запросов — в requests.http.
E2E-тесты в tests/ ходят в запущенный сервис:
docker compose up -d
go test ./tests/...- unit-тесты хендлеров
- метрики Prometheus
- кеш редиректов в Redis
- события кликов в Kafka + сервис статистики
- JWT-авторизация с регистрацией пользователей вместо Basic Auth