Веб-сервис: пользователь отправляет отправляет арифметическое выражение по 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.go
errors.go
calculation_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"}