Простое API для вопросов и ответов, построенное на FastAPI, SQLAlchemy и PostgreSQL. Позволяет создавать вопросы и добавлять к ним ответы с полным набором CRUD операций.
GET /api/v1/questions/- Список всех вопросовPOST /api/v1/questions/- Создать новый вопросGET /api/v1/questions/{id}- Получить вопрос и все ответы на негоDELETE /api/v1/questions/{id}- Удалить вопрос (вместе с ответами)
POST /api/v1/questions/{question_id}/answers/- Добавить ответ к вопросуGET /api/v1/answers/{id}- Получить конкретный ответDELETE /api/v1/answers/{id}- Удалить ответ
- Клонируйте репозиторий
git clone https://github.com/leesache/Q-A-API.git
- Запустите приложение с Docker Compose:
docker-compose up --build
- API будет доступно по адресу
http://localhost:8000 - Документация API по адресу
http://localhost:8000/docs
-
Установите зависимости:
cd src pip install -r requirements.txt -
Настройте подключение к базе данных в файле
.env:DATABASE_URL=postgresql+asyncpg://username:password@localhost:5432/database_name -
Запустите миграции базы данных:
cd src alembic upgrade head -
Запустите приложение находясь в папке src:
python -m main
src/
├── app/
│ ├── api_routes/ # Определения API маршрутов
│ ├── crud/ # Операции с базой данных
│ ├── db/ # Конфигурация базы данных
│ ├── models/ # SQLAlchemy модели
│ └── schemas/ # Pydantic схемы
├── migrations/ # Миграции Alembic
├── main.py # Точка входа приложения
└── requirements.txt # Python зависимости
Посмотрите на файл .env.template и расположите свой .env в той же директории
DATABASE_URL- Строка подключения к PostgreSQL (обязательно)
-
Установите зависимости для тестов (из директории
src):pip install -r requirements.txt
-
Запустите тесты:
pytest -q src/tests
По умолчанию интеграционные тесты используют in-memory SQLite (sqlite+aiosqlite:///:memory:) и не трогают вашу основную БД.