2.5 KiB
Сокращатель ссылок
Данный проект предоставляет API
для сокращения ссылок и отслеживания переходов по
этим ссылкам.
Для работы данного сервиса необходима готовя БД PostgreSQL
и Redis
.
Начало работы
В корне проекта создаём файл .env
и заполняем его по шаблону из файла .env_template
. В поле MODE
указываем DEV
,
а в поле SHORTENER_HOST
- домен сервера, где будет хоститься сервис.
Собираем докер образ
docker compose build
Запускаем докер контейнер
docker compose up
По умолчанию сервис использует порт 8000
в контейнере и порт 8000
вне контейнера.
Работа с API
Для получения сокращённой ссылки необходимо отправить POST
запрос на эндпоинт /zip_url
. Он вернёт новую ссылку в JSON
объекте формата {"new_url": <URL>}
.
При обращении по этому адресу будет выполнен редирект на оригинальный URL
и в редис добавится таймстемп с указанием количества секунд от начала эпохи, когда произошёл редирект.
Получить данные счётчика редиректов можно при обращении к эндпоинту /stats/<URL_ID>
, где URL_ID
это айдишник, который указан в укороченном URL
. Этот эндпоинт возвращает JSON
объект формата {"visit_times": <redirected_times>, "timestamps": [<redirect_timestamp>]}
.
Тестирование
Для начала тестирования необходимо создать файл .test.env
и заполнить его по образцу из .env_template
.
Для запуска тестов, так же необходимо установить все зависимости
pip install -r requirements.txt
Запуск тестов
pytest