Files
sqlalchemy-fastapi-pydentic…/README.md

121 lines
3.1 KiB
Markdown

# sqlalchemy-fastapi-pydentic-pytest
Pet-проект на стеке **FastAPI + SQLAlchemy (async) + Pydantic + Pytest**.
Реализован CRUD для пользователей, JWT-аутентификация и тесты.
---
## 📂 Структура проекта
```
/
├── server/ # исходный код: модели, маршруты, JWT, базы данных
├── run.py # точка входа, запуск приложения
├── requirements.txt # зависимости
├── .env # переменные окружения
├── README.md # этот файл
└── Plan # заметки / TODO / планы по проекту
```
---
## ⚙️ Требования
- Python 3.13.3
- SQLite (по умолчанию)
---
## 🚀 Установка и запуск
1. Клонировать репозиторий:
```bash
git clone <URL репозитория>
cd sqlalchemy-fastapi-pydentic-pytest
```
2. Создать и активировать виртуальное окружение:
```
python3 -m venv venv
source venv/bin/activate # Linux / macOS
venv\Scripts\activate # Windows
```
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
```
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"
}
```
```
👤 Пользователи (CRUD)
• POST /user_create — создать пользователя
• GET /get_user_by_email/{email} — получить пользователя по email
• GET / — получить всех пользователей
• PUT /user_update/{email} — обновить данные пользователя
• DELETE /user_delete/{email} — удалить пользователя
```
🧪 Тестирование
Запуск всех тестов:
```
pytest
```
Тестируются:
```
• CRUD операции
• Pydantic-схемы
• Эндпоинты API
• JWT авторизация
```
✅ TODO
```
• Миграции через Alembic
• Обработка ошибок
• Логирование
• PostgreSQL + Pgpool-II для продакшена ✅
• Разделение схем Pydantic на вход/выход ✅
• Тестирование edge-cases
```
📜 Лицензия
Учебный проект.