Этот проект представляет собой REST API для управления балансом кошельков.
Поддерживаются операции пополнения (DEPOSIT), снятия (WITHDRAW) и получения информации о кошельке.
API разработано с использованием Flask и PostgreSQL.
Система запускается в Docker с помощью docker-compose.
- Backend: Flask + SQLAlchemy
- Database: PostgreSQL
- Migrations: Flask-Migrate
- Containerization: Docker, Docker Compose
- Testing: Pytest
git clone https://github.com/jirafa27/wallet-api.git
cd wallet-apiДля работы программы требуется создать в корне проекта .env файл Пример .env файла
POSTGRES_DB=wallets_db
POSTGRES_USER=user
POSTGRES_PASSWORD=password
DATABASE_URL=postgresql://${POSTGRES_USER}:${POSTGRES_PASSWORD}@postgres:5432/${POSTGRES_DB}
TEST_BASE_URL=http://app:5000/api/v1/walletsСобрать контейнеры:
docker-compose buildЗапустить сервисы в фоновом режиме:
docker-compose up -dПосле запуска приложение будет доступно по адресу: http://127.0.0.1:5000
Проверить работу API:
curl -X GET http://127.0.0.1:5000/
Для запуска тестов
docker-compose run --rm app pytest -vvPOST /api/v1/wallets
{
"status": "success",
"message": "Wallet created successfully",
"wallet": {
"UID": "d0a1e9d6er",
"amount": 0.0
}
} GET /api/v1/wallets/{wallet_uid}
{
"status": "success",
"wallet": {
"UID": "d0a1e9d6ww",
"amount": 1000.0
}
}POST /api/v1/wallets/{wallet_uid}/operation
Тело запроса:
{
"operation_type": "DEPOSIT",
"amount": 500
}Пример ответа:
{
"UID": "doa1eldlsd",
"amount": 1500.0,
"operation": "DEPOSIT",
"status": "success"
}GET /api/v1/wallets
Пример ответа:
{
"status": "success",
"wallets": [
{
"UID": "doa1eldlsd",
"amount": 1000.0
},
{
"UID": "sfdagfgdfb",
"amount": 500.0
}
]
}DELETE /api/v1/wallets
Пример запроса:
{
"wallet_uid": "d0a1e9d6qq"
}Пример ответа:
{
"message": "Wallet deleted successfully",
"status": "success",
"wallet": {
"UID": "TTgdcZ835r",
"amount": 100.0
}
}