Этот проект реализует REST API для управления списком покупок с использованием FastAPI. API позволяет создавать, читать, обновлять и удалять (CRUD) элементы списка покупок, а также получать расходы, сгруппированные по категориям товаров, и общую сумму всех покупок. В проекте также предусмотрен тестовый скрипт с использованием библиотеки requests для демонстрации работы API.
- CRUD-операции:
- Создание нового товара (
POST /items/) - Получение списка всех товаров (
GET /items/) - Получение товара по ID (
GET /items/{item_id}) - Обновление товара (
PUT /items/{item_id}) - Удаление товара (
DELETE /items/{item_id})
- Создание нового товара (
- Расчет расходов:
- Получение расходов, сгруппированных по категориям, и общей суммы всех товаров (
GET /expenses/)
- Получение расходов, сгруппированных по категориям, и общей суммы всех товаров (
- Модель данных:
- Каждый товар содержит поля:
id(UUID),name(название),category(категория, например, "Электроника" или "Продовольствие"),price(цена),unit(единица измерения),quantity(количество).
- Каждый товар содержит поля:
- Тестирование:
- Тестовый скрипт (
test_api.py) демонстрирует работу всех эндпоинтов API, отправляя запросы и проверяя ответы, включая обработку ошибок.
- Тестовый скрипт (
- Python 3.8+
- FastAPI: Для создания REST API
- Pydantic: Для валидации и моделирования данных
- Uvicorn: ASGI-сервер для запуска API
- Requests: Для тестирования эндпоинтов API
- UUID: Для генерации уникальных идентификаторов товаров
- Клонируйте репозиторий: git clone https://github.com/GarryFerstein/FastAPI_Project.git
- Создайте виртуальное окружение: python -m venv venv
- Активируйте виртуальное окружение: source venv/bin/activate
- Установите зависимости: pip install fastapi uvicorn pydantic requests
-
Запустите сервер FastAPI uvicorn main:app --reload Сервер будет доступен по адресу http://127.0.0.1:8000 Swagger UI: http://127.0.0.1:8000/docs
-
Запустите тесты python test_api.py