API для решения математических выражений.
Можно запустить приложение через Docker.
- Docker run
# образ с GitHub
docker pull ghcr.io/linuxfight/yandexcalcapi:main
docker run -p 8080:8080 -d ghcr.io/linuxfight/yandexcalcapi:main
# сборка локально
docker build -t test .
docker run -p 8080:8080 -d test
- Docker compose
docker compose -f compose.yml up --build -d
# unix
go mod download -x
go build -o ./server ./cmd/main.go
./server
# windows
go mod download -x
go build -o ./server.exe ./cmd/main.go
./server.exe
Для использования вам нужен http клиент (к примеру Postman или Insomnia). Также можно использовать любой http клиент для вашего языка программирования.
Можно использовать уже запущенную версию - https://solve.linuxfight.me/api/v1/calculate.
Отправьте запрос на http://localhost:8080/api/v1/calculate
Пример на typescript
const sendPostRequest = async () => {
const url = 'http://localhost:8080/api/v1/calculate';
const data = {
expression: '2+2*2',
};
try {
const response = await fetch(url, {
method: 'POST',
headers: {
'Content-Type': 'application/json',
},
body: JSON.stringify(data),
});
if (!response.ok) {
throw new Error('Network response was not ok');
}
const responseData = await response.json();
console.log('Response:', responseData);
} catch (error) {
console.error('Error:', error);
}
};
sendPostRequest();
Такой же пример с помощью curl
curl --location 'http://localhost:8080/api/v1/calculate' \
--header 'Content-Type: application/json' \
--data '{
"expression": "2+2*2"
}'
-
.github
- CI для проверки кода, автоматической сборки Docker, обновления зависимостей -
cmd
- пакет main, код для запуска -
internal
- код веб сервера -
pkg/calc
- код для обработки выражений
expression
- строка-выражение состоящее из односимвольных идентификаторов и знаков арифметических действий.
Входящие данные - цифры(рациональные), операции +, -, *, /, операции приоритизация ( или )
В случае ошибки записи выражения сервер выдает ошибку 422. При успешном выполнении будет получен код 200. Если будет вызвана ошибка на сервере, то будет возвращён код 500.
Запрос:
{
"expression": "2+2*2"
}
Ответ:
{
"result": "6"
}
Если запрос не содержит заголовок Content-Type
= application/json
, то вы получите:
{
"error": "Content-Type must be application/json"
}
Запрос:
{
"testing": 123
}
или
{
"expression": ""
}
Ответ:
{
"error": "invalid JSON"
}
Также может быть вызвано неверным выражением:
{
"expression": "a + 523"
}
или
{
"expression": "+521*21()())))))"
}
Ответ:
{
"error": "invalid character/expression/etc"
}
Ошибка может произойти, если выполнение Solve вызвало панику.
{
"error": "Internal server error"
}