README.md

Апи для калькулятора. Тестовое задание для ГОСТ-С

Механика работы:

Eсли записать левое и правое значение, то можно отсылать команду операции, которая обновит текущий результат. значения можно менять произвольное количество раз, используются последние. если записано только правое значение и отослана операция, то в качестве левого значения используется последний вычисленный результат. если его нет - ошибка операндов.

минимум ошибок: валидация данных по значению и типу, не задано левое значение, правое, операция не выбрана, нет вычисленных результатов.

Запуск в DEV режиме

Скопировать репозиторий командой:

  git clone https://gitflic.ru/project/mrkarlkarlsn/calculate.git

Активировать виртуальное окружение командой:

  source venv/bin/activate

Перейти в директорию calculate командой:

  cd calculate

Установить все зависимости командой:

  pip install -r requirements.txt 

Выполнить команды:

  python manage.py collectstatic
  python manage.py makemigrations
  python manage.py migrate
  python manage.py runserver

Проект будет запущен по адресу: http://localhost/api/

Документация по проекту будет запущена по адресу:http://localhost/api/redoc/

Запуск docker-compose

Скопировать репозиторий командой:

  git clone https://gitflic.ru/project/mrkarlkarlsn/calculate.git

Перейти в директорию infra командой:

  cd infra

Выполнить команду :

  docker-compose up -d

В нутри контейнера выполнить команды:

  python manage.py collectstatic
  python manage.py makemigrations
  python manage.py migrate

Проект будет запущен по адресу: http://localhost/api/

Документация по проекту будет запущена по адресу:http://localhost/api/redoc/

Запуск авто-тестов:

В директории c файлом manage.py выполнить команду:

   python manage.py test api.tests

Примеры запросов:

Запрос:

  GET /api/calculate/

Ответ:

[
  {
    "id": 0,
    "left_value": 0,
    "right_value": 0,
    "operation": "+",
    "result": 0,
    "create_result": "2019-08-24T14:15:22Z"
  }
]
  POST /api/calculate/

Тело запроса:

[
  {
    "left_value": 1,
    "right_value": 2,
    "operation": "+",
  }
]

Ответ:

[
  {
    "id": 1,
    "left_value": 1,
    "right_value": 2,
    "operation": "+",
    "result": 3,
    "create_result": "2019-08-24T14:15:22Z"
  }
]

Автор

Кузьмин Артём

Описание

Тестовое задание

Конвейеры
0 успешных
0 с ошибкой