FastAPI-приложение для управления студентами и группами студентов.
- создание студентов;
- создание групп;
- получение студента по
id; - получение группы по
id; - получение списка студентов;
- получение списка групп;
- удаление студентов;
- удаление групп;
- добавление студента в группу;
- удаление студента из группы;
- получение всех студентов группы;
- перевод студента из одной группы в другую.
- Python
- FastAPI
- SQLModel
- PostgreSQL
- Docker Compose
- Uvicorn
app/
├── api/ # API endpoints
├── db/ # подключение к базе данных
├── models/ # ORM-модели
├── repositories/ # работа с БД
├── schemas/ # схемы запросов и ответов
├── services/ # бизнес-логика
├── config.py
└── main.py
Пример .env:
POSTGRES_DB=students_db
POSTGRES_USER=postgres
POSTGRES_PASSWORD=postgres
POSTGRES_HOST=localhost
POSTGRES_PORT=5432В репозитории находится файл .env.example.
Запустить базу данных:
docker compose up -dСоздать и активировать виртуальное окружение:
python3 -m venv venv
source venv/bin/activateУстановить зависимости:
pip install -r requirements.txtЗапустить приложение:
uvicorn app.main:app --reloadЕсли приложение запускается на виртуальной машине:
uvicorn app.main:app --reload --host 0.0.0.0http://127.0.0.1:8000/docs
Для виртуальной машины:
http://<IP_ВМ>:8000/docs
| Метод | Endpoint | Описание |
|---|---|---|
POST |
/students |
Создать студента |
GET |
/students |
Получить список студентов |
GET |
/students/{student_id} |
Получить студента по id |
DELETE |
/students/{student_id} |
Удалить студента |
POST |
/students/{student_id}/transfer |
Перевести студента в другую группу |
| Метод | Endpoint | Описание |
|---|---|---|
POST |
/groups |
Создать группу |
GET |
/groups |
Получить список групп |
GET |
/groups/{group_id} |
Получить группу по id |
DELETE |
/groups/{group_id} |
Удалить группу |
POST |
/groups/{group_id}/students/{student_id} |
Добавить студента в группу |
DELETE |
/groups/{group_id}/students/{student_id} |
Удалить студента из группы |
GET |
/groups/{group_id}/students |
Получить студентов группы |
docker compose down