# LR3: REST API на Flask Реализация находится в папке `LR3`: - `LR3/irfm_lr3.py` - Flask REST API для таблицы `calls` из `data/calls.db` - `LR3/cli_client.py` - CLI-клиент для ручного взаимодействия с API ## Возможности API 1. Получение списка объектов с пагинацией: `GET /api/calls?page=1&per_page=20` 2. Получение одного объекта по ключу (ID = `rowid`): `GET /api/calls/` 3. Добавление объекта: `POST /api/calls` 4. Редактирование объекта: `PUT /api/calls/` 5. Удаление объекта: `DELETE /api/calls/` 6. Дополнительный метод (общее число обращений за час): `GET /api/stats/hour/` Формат ответа: - JSON (по умолчанию) - WSDL/XML: передайте `?format=wsdl` (или `Accept: application/wsdl+xml`) - Отдельное описание WSDL: `GET /api/wsdl` ## Запуск ```bash uv sync uv run python LR3/irfm_lr3.py ``` Сервер поднимется на `http://127.0.0.1:5000`. ## Запуск CLI В отдельном терминале (при запущенном сервере): ```bash uv run python LR3/cli_client.py ``` CLI позволяет вручную выбрать метод API, указать входные данные и формат ответа. ## Docker (для передачи коллеге) Собрать образ из корня проекта: ```bash docker build -t irfm-lr3-api . ``` Запустить контейнер: ```bash docker run --rm -p 5000:5000 irfm-lr3-api ``` API будет доступен по адресу `http://localhost:5000`. Проверка: ```bash curl http://localhost:5000/api/calls?page=1&per_page=3 ``` Важно: база `data/calls.db` копируется внутрь образа на этапе сборки. Если нужно сохранять изменения между перезапусками контейнера, можно примонтировать внешний файл базы: ```bash docker run --rm -p 5000:5000 \ -v $(pwd)/data/calls.db:/app/data/calls.db \ irfm-lr3-api ```