Files
Dmitry 98c27fec85 Bulk rename/move files to '8' directories
Perform a bulk rename/move of many files and folders: paths previously prefixed with '01', '02', '03', '04', etc. were relocated to equivalent paths prefixed with '8'. Changes are path-only (R100 renames) and do not modify file contents; this reorganizes the repository structure.
2026-06-09 22:25:32 +03:00

71 lines
2.3 KiB
Markdown

# 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/<id>`
3. Добавление объекта: `POST /api/calls`
4. Редактирование объекта: `PUT /api/calls/<id>`
5. Удаление объекта: `DELETE /api/calls/<id>`
6. Дополнительный метод (общее число обращений за час): `GET /api/stats/hour/<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
```