You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
2.0 KiB
2.0 KiB
Тестовое задание для Stilsoft
Сервис для асинхронной обработки ссылок.
Для настройки сервиса используются переменные окружения в файле .env
. Экспортировать их в терминал не нужно, они считаются автоматически.
Запуск осуществляется через cargo run
.
Реализованные фичи
- сервер на axum с API для управления ссылками (просмотр/загрузка/удаление, см. схему ниже)
- in-memory хранилище на sled
- из результата запроса ссылки достаётся количество символов
- кэширование результатов (бессрочное)
- удаление дубликатов ссылок
- возможность указать размер пула обработчиков ссылок через URL_HANDLERS_POOL_SIZE
- логирование и чтение настроек логирования через RUST_LOG
- отмена загрузки ссылок на SIGHUP
Для отправки HTTP-запросов к сервису можно использовать дополнительную утилиту run.py:
./run.py list <url1> <url2>
./run.py upload <url1> <url2>
./run.py del <url1> <url2>
Схема
Получение списка сохранённых ссылок:
Без фильтров:
GET localhost:8000/url
С фильтром:
POST localhost:8000/url
body: {"urls": [url1, url2]}
Загрузка ссылок:
POST localhost:8000/url/upload
body: {"urls": [url1, url2]}
Удаление сохранённых ссылок:
Удаление всех ссылок:
GET localhost:8000/url/delete
Удаление заданных ссылок:
POST localhost:8000/url/delete
body: {"urls": [url1, url2]}