Files
sqlalchemy-fastapi-pydentic…/README.md
2025-09-22 14:32:34 +03:00

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 (по умолчанию)

🚀 Установка и запуск

  1. Клонировать репозиторий:
    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

📜 Лицензия

Учебный проект.