Сервис предназначен для вычисления арифметических выражений, отправленных через HTTP POST запрос. Пользователь отправляет выражение в теле запроса, а сервис возвращает результат вычисления или сообщение об ошибке.
.
│ go.mod
│ README.md
│
├───cmd
│ main.go
│
└───internal
├───api
│ api.go
│ api_test.go
│
└───math
math.go
math_test.go
-
Убедитесь, что у вас установлен Go версии 1.19 или выше.
-
Клонируйте этот репозиторий и перейдите в него:
git clone https://github.com/schmalz302/Calc cd Calc -
Запустите сервис с помощью команды:
go run cmd/main.go
-
Сервис будет доступен по адресу: http://localhost:8080
Рекомендуется использовать curl, Postman или аналогичный инструмент для проверки работы сервиса. Проверьте все сценарии: корректные выражения, некорректные данные и симуляцию внутренних ошибок.
| Request Method | Endpoint | Request Body | Response Body | HTTP Status Code |
|---|---|---|---|---|
| POST | /api/v1/calculate |
{ "expression": "2 + 2" } |
{ "result": 4 } |
200 OK |
| POST | /api/v1/calculate |
{ "expression": "2 / 0" } |
{"error": "Internal server error"} |
500 Internal Server Error |
| POST | /api/v1/calculate |
{ "expression": "invalid expression" } |
{ "error": "Invalid expression" } |
422 Unprocessable Entity |
| POST | /api/v1/calculate |
{ "expression": } |
{ "error": "Invalid request body" } |
400 Bad Request |
| POST | /api/v1/calculate |
non-json string |
{ "error": "Invalid request body" } |
400 Bad Request |
| GET | /api/v1/calculate |
N/A | { "error":"Method not allowed" } |
405 Method Not Allowed |
- 200: Успешное вычисление
- 422: Ошибка в выражении (неверный формат)
- 500: Внутренняя ошибка сервера
- 405: Неверный метод запроса (только POST разрешен)
тесты math
go test ./internal/math/тесты api
go test ./internal/api/тесты math с подробной информацией
go test -v ./internal/math/тесты api с подробной информацией
go test -v ./internal/api/запуск всех тестов
go test ./...запуск всех тестов c подробной информацией
go -v test ./...запуск тестов с информации о покрытии
go test -cover ./...-
файл main не тестировал, тк при запуске сервера мы не вводим порт и другие данные, валидировать особо нечего, при запуске сервера все должно отработать корректно
-
покрытие тестами 95.2% - пакет math, 90.0% - пакет api
-
сценарии использования оформил в виде таблице, тк это удобно
-
тг
@bll_nev_egor