update readme 3
This commit is contained in:
165
README.md
165
README.md
@@ -1,99 +1,120 @@
|
||||
# sqlalchemy‑fastapi‑pydentic‑pytest
|
||||
# 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/
|
||||
│ ├── … # код FastAPI + SQLAlchemy + модели, схемы и маршруты
|
||||
├── run.py # точка входа
|
||||
├── requirements # зависимости
|
||||
├── server/ # исходный код: модели, маршруты, JWT, базы данных
|
||||
├── run.py # точка входа, запуск приложения
|
||||
├── requirements.txt # зависимости
|
||||
├── .env # переменные окружения
|
||||
├── README.md # этот файл
|
||||
├── .gitignore
|
||||
└── Plan # план/заметки по проекту
|
||||
```
|
||||
└── Plan # заметки / TODO / планы по проекту
|
||||
|
||||
---
|
||||
|
||||
## ⚙️ Установка и запуск
|
||||
## ⚙️ Требования
|
||||
|
||||
```bash
|
||||
# клонировать репозиторий
|
||||
git clone <URL репо>
|
||||
cd sqlalchemy-fastapi-pydentic-pytest
|
||||
- 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
|
||||
source venv/bin/activate # Linux / macOS
|
||||
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
|
||||
|
||||
# по умолчанию запустится 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
|
||||
```
|
||||
|
||||
Описание тестов:
|
||||
Тестируются:
|
||||
• 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 схемы).
|
||||
|
||||
---
|
||||
|
||||
## 📄 Лицензия
|
||||
|
||||
Этот проект учебный.
|
||||
Учебный проект.
|
||||
|
||||
Reference in New Issue
Block a user