📖 Проект реализует 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