3.1 KiB
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 (по умолчанию)
🚀 Установка и запуск
- Клонировать репозиторий:
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=&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} — удалить пользователя
⸻
🧪 Тестирование
Запуск всех тестов:
pytest
Тестируются: • CRUD операции • Pydantic-схемы • Эндпоинты API • JWT авторизация
⸻
✅ TODO • Миграции через Alembic • Обработка ошибок • Логирование • PostgreSQL + Pgpool-II для продакшена • Разделение схем Pydantic на вход/выход • Тестирование edge-cases
⸻
📜 Лицензия
Учебный проект.