link_shortener/README.md

2.5 KiB
Raw Permalink Blame History

Сокращатель ссылок

Ruff

Данный проект предоставляет 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