Веб-сервис: пользователь отправляет отправляет арифметическое выражение по HTTP и получает в ответ его результат. Калькулятор обрабатывает только однозначные числа,скобки вида '(' ')' и арифметические операции:
1)Сложение (+)
2)Вычитание (-)
3)Умножение (*)
4)Деление (/)
В случае с неоднозначными числами и арифметическими операциями не из этого списка сервис будет выдавать ошибку : {"error":"Expression is not valid"}
Не обрабатываются отрицательные числа.
Также веб-сервис не обрабатывает выражения содержащие символы английского, русского или каких-либо других языков.
Обработка выражений с пробелами производится корректно.
Веб-сервис написан на языке Go и использует следующие библиотеки и инструменты:
- Go (версия 1.23.2)
net/http: Базовый HTTP-сервер для обработки запросов.errors:Библиотека для работы с ошибками.io:Базовые интерфейсы для работы с вводом и выводом.bytes:Утилиты для работы с байтовыми срезами.encoding/json:Кодирование и декодирование JSON.fmt:Форматированный ввод/вывод.net/http/httptest:Инструменты для тестирования HTTP-серверов и клиентов.testing:Предоставляет инструменты для написания и организации модульных, интеграционных и нагрузочных тестов.strings:Утилиты для работы со строками.strconv:Преобразование строк в числа, булевые значения и обратно.unicode:Работа с символами Unicode.os:Работа с операционной системой.
-
cmd/main.go
-
internal/application/
-
pkg/calculation/calculation.goerrors.gocalculation_test.go
Для начала нужно склонировать репозиторий командой
git clone [email protected]:StarwinM/go_final_sprint1.git
После этого вам нужно перейти в папку с проектом
cd go_final_sprint1
Теперь вы можете запустить проект , но для этогт нужно чтобы был установлен Go версии 1.23.2 Ссылка для скачивания: Go Download
Команда для запуска проекта
go run ./cmd/main.go
Для прекращения работы можете нажать сочетание клавиш Ctrl+C
После запуска проекта вы можете отправлять cURL-запросы к сервису:
Так как в терминале Windows не обрабатываются cURL запросы я использовал git bash.
Стоит отметить , что веб-сервис использует порт 4040
cURL команда с ответом сервиса 200:
curl --location '127.0.0.1:4040/api/v1/calculate' --header 'Content-Type: application/json' --data '{
"expression": "2+2*2"
}'Ответ:
{"result":"6.00000000"}cURL команда с ответом сервиса 400:
curl --location '127.0.0.1:4040/api/v1/calculate' --header 'Content-Type: application/json' --data '{
"expression": "2+2*2
}'Ответ:
{"error":"Bad request"}cURL команда с ответом сервиса 405:
curl --request GET \ --url '127.0.0.1:4040/api/v1/calculate' --header 'Content-Type: application/json' --data '{
"expression": "2+2*2"
}'Ответ:
{"error":"You can use only POST method"}cURL команда с ответом сервиса 422:
curl --location '127.0.0.1:4040/api/v1/calculate' --header 'Content-Type: application/json' --data '{
"expression": "2+2*2)"
}'Ответ:
{"error":"Expression is not valid"}Также cURL команда с ответом сервиса 422 где вы пытаетесь поделить на 0:
curl --location '127.0.0.1:4040/api/v1/calculate' --header 'Content-Type: application/json' --data '{
"expression": "(2+2*2)/0"
}'Ответ:
{"error":"You can't divide by zero"}