Лабораторная работа 1: Разработка клиент-серверного веб-приложения на базе FastAPI
Цель работы:
Изучить принципы построения REST API с использованием фреймворка FastAPI, освоить валидацию данных с помощью Pydantic, а также реализовать клиентскую часть для взаимодействия с сервером (через веб-интерфейс, Python-скрипт или CLI).
Вы можете выбрать любую предметную область, например свои проекты.
Примеры:
Система учета книг в библиотеке (Добавление, поиск, удаление, выдача).
Трекер личных задач / Todo приложение (Задачи, дедлайны, категории, статусы).
Сервис заказа еды/товаров (Каталог товаров, корзина, оформление заказа).
Учет успеваемости студентов (Студенты, оценки, предметы, средний балл).
Мониторинг погоды / курсов валют (Логирование данных, история изменений, фильтры).
Технические требования к реализации
1. Серверная часть (Backend)
Фреймворк: FastAPI.
Архитектура: Чистый REST API с использованием корректных HTTP-методов (GET, POST, PUT, DELETE).
Валидация данных: Обязательное использование Pydantic-моделей для входящих и исходящих данных.
Хранение данных: На выбор студента — in-memory (в памяти приложения в виде списков/словарей), в JSON-файлах или с использованием базы данных (SQLite / PostgreSQL через SQLAlchemy).
Документация: API должно быть полностью документировано. Интерактивная документация /docs (Swagger) должна открываться без ошибок.
Обработка ошибок: Реализовать корректный возврат HTTP-статусов (например, 404 Not Found, 400 Bad Request) с помощью HTTPException.
2. Клиентская часть (Frontend / Client)
Необходимо реализовать три варианта взаимодействия с созданным API:
Вариант 1: Python-скрипт с использованием библиотеки requests или httpx, демонстрирующий выполнение всех CRUD-операций. (Можно использовать pytest)
Вариант 2: CLI-приложение (интерфейс командной строки) на Python для управления данными через API.
Вариант 3: Простой веб-интерфейс на HTML + JavaScript (fetch API), интегрированный в FastAPI через StaticFiles или шаблоны Jinja2. (Можно использовать свой стек)