Wallet API — это сервис для управления кошельками. Сервис предоставляет REST API для выполнения следующих операций:
- Пополнение кошелька.
- Снятие средств с кошелька.
- Получение баланса кошелька.
Проект написан на языке Go с использованием Gorilla Mux для маршрутизации. В качестве базы данных используется PostgreSQL. Для управления сервисом предусмотрен Docker Compose.
- Docker и Docker Compose
- Go (если требуется локальная сборка)
Перед запуском проекта создайте файл config.env с параметрами для подключения к базе данных. К примеру:
DB_HOST=localhost
DB_PORT=5432
DB_USER=postgres
DB_PASSWORD=postgres
DB_NAME=wallet_db
DB_SSLMODE=disableДля запуска проекта используйте следующую команду:
docker-compose up --buildDocker Compose автоматически поднимет два сервиса:
- wallet_api — приложение API.
- postgres — база данных PostgreSQL.
После успешного запуска API будет доступно по адресу: http://localhost:8080.
Чтобы остановить проект, выполните:
docker-compose downВ качестве примера в таблице SQL проекта используется следующее walletId:19623ea0-ea8a-4b57-8303-1d81468a8f9d
Также в кошельке уже имеется amount = 500.
POST /api/v1/wallet
Пример запроса:
{
"walletId": "19623ea0-ea8a-4b57-8303-1d81468a8f9d",
"operationType": "DEPOSIT",
"amount": 1000
}Коды ответа:
200 OK— успешное выполнение операции.400 Bad Request— неверный формат данных.500 Internal Server Error— ошибка сервера.
POST /api/v1/wallet
Пример запроса:
{
"walletId": "19623ea0-ea8a-4b57-8303-1d81468a8f9d",
"operationType": "WITHDRAW",
"amount": 500
}Коды ответа:
200 OK— успешное выполнение операции.400 Bad Request— неверный формат данных или недостаточно средств.500 Internal Server Error— ошибка сервера.
GET /api/v1/wallets/{id}
Пример запроса:
GET /api/v1/wallets/19623ea0-ea8a-4b57-8303-1d81468a8f9dПример ответа:
{
"balance": 4500
}Коды ответа:
200 OK— баланс успешно получен.400 Bad Request— неверный формат ID.500 Internal Server Error— ошибка сервера.
Для запуска юнит-тестов выполните команду:
go test ./... -v