📖 Проект реализует REST API для создания и управления вопросами и ответами пользователей на вопросы. Нельзя создать ответ к несуществующему вопросу. Один и тот же пользователь может оставлять несколько ответов на один вопрос. При удалении вопроса удаляются все его ответы (каскадно).
GET /questions/
— список всех вопросовPOST /questions/
— создать новый вопросGET /questions/{question_id}
— получить вопрос и все ответы на негоDELETE /questions/{question_id}
— удалить вопрос (вместе с ответами)
POST /questions/{question_id}/answers/
— добавить ответ к вопросуGET /answers/{answer_id}
— получить конкретный ответDELETE /answers/{answer_id}
— удалить ответ
-
⚡ FastAPI
-
🐘 PostgreSQL
-
🔁 SQLAlchemy + Async ORM
-
📄 Alembic миграции
-
🐳 Docker/Docker Compose
-
🧪 Pytest
-
🔧 Pydantic
git clone https://github.com/MaxBakshaev/FastAPI-QA-Service.git
cd FastAPI-QA-Service
Для Linux или macOS:
mkdir -p app && touch app/.env app/.env.postgres
Для Windows:
type nul > app\.env
type nul > app\.env.postgres
3.1. Добавьте переменные окружения:
APP_CONFIG__DB__URL=postgresql+asyncpg://user:pwd@postgres-qa-service:5432/DBname
APP_CONFIG__DB__ECHO=1
3.2. ✏️ Замените в APP_CONFIG__DB__URL:
user
— имя пользователя БДpwd
— парольDBname
— название БД
4.1. Добавьте переменные окружения с вашими данными:
POSTGRES_USER=ваше_имя_пользователя
POSTGRES_PASSWORD=ваш_пароль
POSTGRES_DB=ваше_название_БД
Убедитесь, что Docker Desktop запущен. Затем создайте и запустите докер контейнер:
make up
Остановить:
make stop
Очистить контейнеры, сети, тома и образы:
make clean
- 📄 Дополнительные команды смотрите в
Makefile
.
-
📚 Swagger UI: http://127.0.0.1:8000/docs
-
📘 Redoc: http://127.0.0.1:8000/redoc
make test