Skip to content

Задание для спринта 1 финального проекта

Notifications You must be signed in to change notification settings

StarwinM/go_final_sprint1

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

4 Commits
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Веб-сервис для вычисления арифметических выражений

О проекте

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

Quick start

Для начала нужно склонировать репозиторий командой

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"}

About

Задание для спринта 1 финального проекта

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages