Files
sqlalchemy-fastapi-pydentic…/README.md
2025-10-05 16:13:13 +03:00

123 lines
3.3 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

# sqlalchemy-fastapi-pydentic-pytest
Pet-проект на стеке **FastAPI + SQLAlchemy (async) + Pydantic + Pytest**.
Реализован CRUD для пользователей, JWT-аутентификация и тесты.
---
## 📂 Структура проекта
```
/
├── server/backend # Исходный код: endpoints, pydantic, JWT, отправка паролей на почту, permissions, rate-limiting
├── server/frontend # Странички login, registration, reset-password, main
├── server/database # База данных, alembic, db_balancer(не настроен, как шаблон)
├── server/testing # pytests
├── run.py # Точка входа, запуск приложения
├── makefile # Точка входа, запуск приложения и утилит
├── requirements.txt # Зависимости
├── .env # Переменные окружения
└── README.md # Этот файл
```
---
## ⚙️ Требования
- 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. Мигрировать БД:
```
make migrate_head
```
6. Запустить приложение:
```
python run.py или вне окружения сразу прописать make run
```
7. Документация 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} — удалить пользователя
```
🧪 Тестирование
Запуск всех тестов:
```
make test
```
Тестируются (В планах):
```
• CRUD операции
• Pydantic-схемы
• Эндпоинты API
• JWT авторизация
```
✅ TODO
```
• Тестирование edge-cases
```
📜 Лицензия
Учебный проект.