71 lines
2.3 KiB
Markdown
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
|
|
```
|