49 lines
2.5 KiB
Markdown
49 lines
2.5 KiB
Markdown
# Сокращатель ссылок
|
||
|
||
[](https://github.com/astral-sh/ruff)
|
||
|
||
Данный проект предоставляет `API` для сокращения ссылок и отслеживания переходов по
|
||
этим ссылкам.
|
||
|
||
Для работы данного сервиса необходима готовя БД `PostgreSQL` и `Redis`.
|
||
|
||
|
||
## Начало работы
|
||
|
||
В корне проекта создаём файл `.env` и заполняем его по шаблону из файла `.env_template`. В поле `MODE` указываем `DEV`,
|
||
а в поле `SHORTENER_HOST` - домен сервера, где будет хоститься сервис.
|
||
|
||
Собираем докер образ
|
||
```shell
|
||
docker compose build
|
||
```
|
||
|
||
Запускаем докер контейнер
|
||
```shell
|
||
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`.
|
||
|
||
Для запуска тестов, так же необходимо установить все зависимости
|
||
```shell
|
||
pip install -r requirements.txt
|
||
```
|
||
|
||
Запуск тестов
|
||
```shell
|
||
pytest
|
||
```
|