Этот сервис позволяет пользователям отправлять арифметические выражения через POST-запросы на сервер и получать в ответ рассчитанный результат.
Требуется Golang >= 1.23.
-
Клонируйте репозиторий:
git clone https://github.com/veliashev/web-calculation cd web-calculation
-
Запустите проект:
go run ./cmd/main.go
-
При желании можно воспользоваться командой make:
make run
По умолчанию сервер будет доступен по адресу http://localhost:8080.
Сервис имеет один endpoint:
-
URL: /api/v1/calculate
-
Метод: POST
-
Тело запроса:
{ "expression": "ваше выражение" }
-
Успешный ответ:
{ "result": "результат выражения" }
Код статуса: 200
-
Ответы с ошибками:
-
Некорректное выражение:
{ "error": "некорректное выражение (подробности...)" }
Код статуса: 422
-
Внутренняя ошибка сервера:
{ "error": "Internal server error (подробности...)" }
Код статуса: 500
-
Для запросов к серверу можно использовать консольную утилиту curl, можно графические утилиты, навроде Postman. Примеры приведены для curl. Используйте то, что вам удобнее.
По умолчанию используется порт 8080, если у вас он занят, можете сменить его в файле config.json.
curl --location 'http://localhost:8080/api/v1/calculate' --header 'Content-Type: application/json' --data '{"expression": "2+2*2"}'
-
Ответ:
{ "result": 6 }
curl --location 'http://localhost:8080/api/v1/calculate' --header 'Content-Type: application/json' --data '{"expression": "2+2*a"}'
-
Ответ:
{ "error": "недопустимая цифра в выражении" }
curl --location 'http://localhost:8080/api/v1/calculate' --header 'Content-Type: application/json' --data '{"expression": 9}'
-
Ответ:
{ "error": "json: cannot unmarshal number into Go struct field Request.expression of type string" }
Запустить тесты CalculationHandler можно с помощью make:
make test
Запустить тесты API можно вручную, параллельно с запущенным сервером запустив скрипт test.sh. В таком случае не забудьте выдать ему полномочия для запуска:
sudo chmod +x ./test/test.sh