Это учебный backend-проект для работы с данными о студентах. Приложение позволяет добавлять, хранить, изменять и удалять информацию о студентах, включая имя, контактные данные и оценки. Проект был создан для практики разработки REST API, работы с базой данных PostgreSQL и реализации CRUD-логики с использованием FastAPI.
API позволяет:
- создавать студентов
- получать список студентов
- получать данные конкретного студента
- добавлять контактные данные студента
- добавлять оценки студенту
- обновлять данные (PATCH)
- удалять контакты и оценки
- Python
- FastAPI
- SQLAlchemy
- PostgreSQL
- Alembic
- Pydantic
- построение REST API
- реализацию полноценного CRUD
- работу с PostgreSQL
- использование SQLAlchemy ORM
- создание и применение миграций через Alembic
- валидацию входящих данных через Pydantic
- разделение проекта на routers
students_api/ │ ├── alembic/ # миграции базы данных │ ├── app/ │ ├── database.py # подключение к базе данных │ ├── main.py # точка входа FastAPI │ ├── models.py # модели SQLAlchemy │ ├── schemas.py # Pydantic схемы │ │ │ └── routers/ │ ├── students.py │ ├── contacts.py │ └── grades.py │ └── README.md
- Клонировать репозиторий: git clone <ссылка_на_репозиторий>
- Перейти в папку проекта: cd students_api
- Создать и активировать виртуальное окружение python -m venv .venv .venv\Scripts\activate
- Установить зависимости: pip install -r requirements.txt
- Применить миграции: alembic upgrade head
- Запустить сервер: uvicorn app.main:app --reload
- Открыть Swagger: http://127.0.0.1:8000/docs
POST /students — создать студента
GET /students — список студентов
GET /students/{student_id} — информация о студенте
PATCH /students/{student_id} — обновить данные студента
POST /students/{student_id}/contacts — добавить контакт
GET /students/{student_id}/contacts — получить контакты
PATCH /contacts/{contact_id} — обновить контакт
DELETE /contacts/{contact_id} — удалить контакт
POST /students/{student_id}/grades — добавить оценку
GET /students/{student_id}/grades — получить оценки
PATCH /grades/{grade_id} — обновить оценку
DELETE /grades/{grade_id} — удалить оценку
Полная документация API доступна в Swagger: http://127.0.0.1:8000/docs