Skip to content

Repository files navigation

URL Shortener

Учебный сервис коротких ссылок на Go: REST API поверх chi, PostgreSQL (pgx), миграции через golang-migrate, структурированные логи slog.

Запуск

Docker (рекомендуемый)

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-конфигу окружения

API

Метод и путь Описание 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

About

No description, website, or topics provided.

Resources

Stars

0 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages