update readme 3

This commit is contained in:
2025-09-22 14:29:37 +03:00
parent 79568954bc
commit cdeb641cd7

161
README.md
View File

@@ -1,99 +1,120 @@
# sqlalchemyfastapipydenticpytest # sqlalchemy-fastapi-pydentic-pytest
пет‑проект для интеграции FastAPI, SQLAlchemy, Pydantic и Pytest. Pet-проект на стеке **FastAPI + SQLAlchemy (async) + Pydantic + Pytest**.
Реализован CRUD для пользователей, JWT-аутентификация и тесты.
--- ---
## 🔍 Описание ## 📂 Структура проекта
Проект демонстрирует, как:
- работать с **FastAPI**: REST API эндпоинты, маршруты, зависимости и схемы;
- использовать **SQLAlchemy** для работы с базой данных: модели, сессии, CRUDоперации;
- валидировать данные через **Pydantic**;
- тестировать всё через **Pytest**: модульные и интеграционные тесты.
Цель — собрать всё вместе и понять best practices.
---
## 📁 Структура проекта
```text
/ /
├── server/ ├── server/ # исходный код: модели, маршруты, JWT, базы данных
│ ├── … # код FastAPI + SQLAlchemy + модели, схемы и маршруты ├── run.py # точка входа, запуск приложения
├── run.py # точка входа ├── requirements.txt # зависимости
├── requirements # зависимости ├── .env # переменные окружения
├── README.md # этот файл ├── README.md # этот файл
── .gitignore ── Plan # заметки / TODO / планы по проекту
└── Plan # план/заметки по проекту
```
--- ---
## ⚙️ Установка и запуск ## ⚙️ Требования
- Python 3.13.3
- SQLite (по умолчанию)
---
## 🚀 Установка и запуск
1. Клонировать репозиторий:
```bash ```bash
# клонировать репозиторий git clone <URL репозитория>
git clone <URL репо>
cd sqlalchemy-fastapi-pydentic-pytest cd sqlalchemy-fastapi-pydentic-pytest
# создать виртуальное окружение 2. Создать и активировать виртуальное окружение:
python3 -m venv venv python3 -m venv venv
source venv/bin/activate # в Linux/macOS source venv/bin/activate # Linux / macOS
venv\Scripts\activate # в Windows venv\Scripts\activate # Windows
# установить зависимости
pip install -r requirements
# запустить приложение 3. Установить зависимости:
pip install -r requirements.txt
4. Настроить .env файл (пример):
ALLOW_ORIGINS=http://localhost:3000
ALLOW_CREDENTIALS=true
ALLOW_METHODS=GET,POST,PUT,DELETE
ALLOW_HEADERS=*
JWT_SECRET_KEY=your_secret_key
ACCESS_TOKEN_EXPIRE_MINUTES=30
5. Запустить приложение:
python run.py python run.py
# по умолчанию запустится FastAPIсервер (напр. localhost:8000)
```
--- 6. Документация OpenAPI будет доступна по адресу:
• Swagger UI → http://localhost:8000/docs
• JSON схема → http://localhost:8000/openapi.json
## 🧪 Тестирование
🔐 Аутентификация
• Эндпоинт /login принимает application/x-www-form-urlencoded:
username=<email>&password=<пароль>
• Возвращает JWT токен:
{
"access_token": "...",
"token_type": "bearer"
}
• Пример защищённого эндпоинта: /protected.
👤 Пользователи (CRUD)
• POST /user_create — создать пользователя
• GET /get_user_by_email/{email} — получить пользователя по email
• GET / — получить всех пользователей
• PUT /user_update/{email} — обновить данные пользователя
• DELETE /user_delete/{email} — удалить пользователя
🧪 Тестирование
Запуск всех тестов:
```bash
# запустить все тесты
pytest pytest
```
Описание тестов: Тестируются:
• CRUD операции
• Pydantic-схемы
• Эндпоинты API
• JWT авторизация
- тесты на CRUD операции;
- тесты схем Pydantic;
- тесты ответов API (возможно с тестовым клиентом FastAPI).
--- ✅ TODO
• Миграции через Alembic
• Обработка ошибок
• Логирование
• PostgreSQL + Pgpool-II для продакшена
• Разделение схем Pydantic на вход/выход
• Тестирование edge-cases
## 🛠 Используемые технологии
| Компонент | Версия / Пример использования | 📜 Лицензия
|-------------------|-------------------------------------|
| Python | ≥ 3.x |
| FastAPI | фреймворк для вебAPI |
| SQLAlchemy | ORM для работы с базой данных |
| Pydantic | валидация и сериализация данных |
| Pytest | тестирование |
--- Учебный проект.
## 🚧 Возможности для доработки / TODO
- добавление миграций (например, с Alembic);
- обработка ошибок и кастомные исключения;
- логирование;
- настройка CI/CD;
- защита маршрутов (аутентификация / авторизация);
- конфигурация через envпеременные;
- более подробная документация API (например, OpenAPI схемы).
---
## 📄 Лицензия
Этот проект учебный.