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.
51 lines
1.9 KiB
51 lines
1.9 KiB
# Тестовое задание для Stilsoft |
|
|
|
Сервис для асинхронной обработки ссылок. |
|
|
|
Для настройки сервиса используются переменные окружения в файле `.env`. Экспортировать их в терминал не нужно, они считаются автоматически. |
|
Запуск осуществляется через `cargo run`. |
|
|
|
Реализованные фичи: |
|
- сервер на axum с API для управления ссылками (просмотр/загрузка/удаление, см. схему ниже) |
|
- in-memory хранилище на sled |
|
- из результата запроса ссылки достаётся количество символов |
|
- кэширование результатов (бессрочное) |
|
- удаление дубликатов ссылок |
|
- возможность указать размер пула обработчиков ссылок через URL_HANDLERS_POOL_SIZE |
|
- логирование и чтение настроек логирования через RUST_LOG |
|
|
|
|
|
Для отправки 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 |
|
body: {"urls": [url1, url2]} |
|
```
|
|
|