Yacalc — это HTTP-сервис, предназначенный для вычисления математических выражений, которые передаются в формате JSON. Этот проект позволяет отправлять выражения с помощью POST-запросов и получать либо результаты вычислений, либо сообщения об ошибках.
- Корректный ввод: Выражение вычислено успешно.
- Ошибка 422: Входные данные не соответствуют требованиям приложения.
- Ошибка 500: Случай какой-либо иной ошибки («Что-то пошло не так»).
Вычисление выражения 2+2*2:
curl -i -X POST http://localhost:8080/api/v1/calculate \
--header "Content-Type: application/json" \
--data '{"expression": "2+2*2"}'
Ответ:
HTTP/1.1 200 OK
Date: Sun, 22 Dec 2024 03:10:57 GMT
Content-Length: 12
Content-Type: text/plain; charset=utf-8
{"result":6}%
Ввод некорректного выражения (fsvs):
curl -i -X POST http://localhost:8080/api/v1/calculate \
--header "Content-Type: application/json" \
--data '{"expression": "fsvs"}'
Ответ:
HTTP/1.1 422 Unprocessable Entity
Date: Sun, 22 Dec 2024 03:12:40 GMT
Content-Length: 35
Content-Type: text/plain; charset=utf-8
{"error":"Expression is not valid"}%
Передача пустого выражения:
curl -i -X POST http://localhost:8080/api/v1/calculate \
--header "Content-Type: application/json" \
--data '{"expression": ""}'
Ответ:
HTTP/1.1 500 Internal Server Error
Date: Sun, 22 Dec 2024 03:16:09 GMT
Content-Length: 33
Content-Type: text/plain; charset=utf-8
{"error":"Internal server error"}%
-
Клонируете репозиторий:
git clone https://github.com/1billy17/Yacalc.git cd Yacalc -
Запускаете проект:
go run main.go -
Сервер запустится на порту 8080.
Теперь можно отправлять запросы на эндпоинт:
http://localhost:8080/api/v1/calculate
-
Введите команду:
go test -v ./pkg/calculation/tests -
Получите результат:
=== RUN TestYacalc === RUN TestYacalc/Valid_Expression === RUN TestYacalc/Invalid_Expression === RUN TestYacalc/Internal_server_error --- PASS: TestYacalc (0.00s) --- PASS: TestYacalc/Valid_Expression (0.00s) --- PASS: TestYacalc/Invalid_Expression (0.00s) --- PASS: TestYacalc/Internal_server_error (0.00s) PASS ok Yacalc/pkg/calculation/tests (cached)