GoURLShortener - это простой и эффективный сервис для сокращения URL-адресов, написанный на Go. Он позволяет пользователям сокращать длинные URL-адреса, управлять ими и перенаправлять на исходные URL-адреса.
- Сокращение URL: Преобразование длинных URL-адресов в более короткие и удобные ссылки.
- Перенаправление: Перенаправление пользователей с коротких URL-адресов на исходные.
- Управление URL: Сохранение, получение и удаление сокращенных URL-адресов.
- Логирование: Встроенное логирование для мониторинга и отладки.
- Управление конфигурацией: Отдельные файлы конфигурации для локальной и производственной среды.
- Юнит-тесты: Комплексные юнит-тесты для обеспечения надежности сервиса.
- Готовность к развертыванию: Включает конфигурацию развертывания для легкой настройки.
- Авторизация: Защита определенных маршрутов с помощью базовой аутентификации.
- GitHub Actions: Мануальный деплой по тегу.
- ThisProject: http://185.246.118.245:8082/my1pet
- YouTube: http://185.246.118.245:8082/yt
- Amazon: http://185.246.118.245:8082/hUhha3 - alias сгенерирован автоматически
- cmd/URLShortener/main.go: Точка входа в приложение.
- config/: Содержит файлы конфигурации для разных сред.
- deployment/: Содержит файлы конфигурации для развертывания.
- internal/:
- config/: Управление конфигурацией.
- http-server/: Содержит код, связанный с HTTP-сервером, включая обработчики и middleware.
- lib/: Утилиты, такие как обработка API ответов, логирование и генерация случайных строк.
- storage/: Управление операциями хранения, включая реализацию на SQLite.
- tests/: Содержит юнит-тесты для проекта.
- Без авторизации: Обработка перенаправления по сокращенному URL.
- С авторизацией: Сохранение новых URL, а также удаление существующих URL с использованием базовой аутентификации.
- GET /: Перенаправление по сокращенному URL.
- POST /url: Сохранение нового URL (требуется базовая аутентификация).
- DELETE /url/{alias}: Удаление существующего URL по алиасу (требуется базовая аутентификация).
Этот проект включает поддержку GitHub Actions для автоматизации деплоя. Развертывание происходит вручную по тегу.
- Go 1.16 или выше
- SQLite3
- gcc
-
Клонирование репозитория:
git clone https://github.com/AleBal-A/GoURLShortener.git cd GoURLShortener
-
Установите зависимости:
go mod download
Переменные окружения:
export CONFIG_PATH=/root/apps/GoURLShortener/config/prod.yaml
-
Запустите сервер:
go run cmd/URLShortener/main.go
-
Сервис будет доступен по адресу
http://0.0.0.0:8082
.
Файлы конфигурации находятся в каталоге config/
. Вы можете изменить файлы local.yaml
и prod.yaml
для настройки видимости логов.
Чтобы запустить функциональные тесты:
go test ./test