module
0.0.0-20240430113815-fe9d553798f7
Repository: https://github.com/angstreminus/exchanger.git
Documentation: pkg.go.dev
# README
Задание
Суть задания
Написать REST сервис по расчету всех вариантов размена для указанной суммы денег. На вход принимается HTTP запрос в формате:
{ "amount": 400, "banknotes": [5000, 2000, 1000, 500,200, 100, 50]}
amount
– сумма денег
banknotes
– доступные номиналы банкнот
Пример формата ответа:
{ "exchanges":[[200, 200], [200, 100, 100], [200, 100, 50, 50], [200, 50, 50, 50, 50], [100, 100, 100, 100],[100, 100, 100, 50, 50], [100, 100, 50, 50, 50, 50], [100, 50, 50, 50, 50, 50, 50], [50, 50, 50, 50, 50, 50, 50, 50]]}
Требования к сервису
- конфигурация (хост, порт, уровень логирования)
- graceful shutdown
- оформлен в общедоступном git репозитории
Комментарии к решению
- Использован язык Go(v1.22)
- 3-rd party логгер zap(uber)
2.1. Поэтому поддерживаются 2 уровня логирования:
development
(debug+)production
(info+) default
- Стандартный маршрутизатор net/http ServeMux
- Организован примитивный процесс CI/CD github actions
- Для конфигурирования использован .env
- Код слоя бизнес-логики был покрыт unit-тестами по методике (table testing)
- Реализован graceful shutdown
Путь | Метод | Описание |
---|---|---|
/localhost:8080/exchange | POST | Метод создание разбиения валюты |
Инструкция по запуску приложения
Убедитесь что у вас установлен Go версии 1.22+
- Необходимо склонировать проект:
git clone https://github.com/Angstreminus/exchanger.git
2. Переходим в директорию cmd и запускаем cd exchanger go run cmd/main.go
- Для оценки степени покрытия тестами вводим команду:
go test -short -count=1 -race -coverprofile=coverage.out ./...