Обработчики

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

При помощи API может быть реализовано взаимодействие с обработчиками, предполагающее реализацию таких операций, как:

  1. Получение списка обработчиков.
  2. Получение информации об одном обработчике.
  3. Создание нового обработчика.
  4. Изменение обработчика.
  5. Удаление обработчика.
  6. Запуск тестирования обработчика

Получение списка обработчиков

Для того чтобы получить полный список обработчиков, созданных пользователем и доступных ему, необходимо отправить запрос GET /api/v1/handlers. В ответе будет получен массив объектов, каждый из которых представляет собой конфигурацию отдельного обработчика.

Запрос

GET /api/v1/handlers HTTP/1.1
Content-Type: application/json
Authorization: Bearer {token}

Ответ

HTTP/1.1 200 OK

[
    {
        "_id": "5d8ccd2cc82fdf001127da07",
        "name": "Обработчик 01",
        "description": "Описание обработчика",
        "userCode": "/**\n * Makes the sum of two numbers\n * @param {number} a first\n * @param {number} b second\n */\nfunction process(a, b) {\n  const sum = a + b;\n  return { sum };\n}\n\n/**\n * @author `user_name`\n */\nmodule.exports = process;",
        "tagname": "hndl_S1lfE6H9Pr",
        "code": "function process(a, b) {\n    var sum = a + b;\n    return { sum: sum };\n}\nmodule.exports = process;\n",
        "bindings": {
            "importOrder": [
                "a",
                "b"
            ],
            "import": {
                "a": {
                    "type": "number"
                },
                "b": {
                    "type": "number"
                }
            },
            "exportType": "object",
            "export": {
                "sum": {
                    "type": "number"
                }
            }
        },
        "libs": []
    }
]

Получение информации об одном обработчике

Для того чтобы получить конфигурацию конкретного обработчика, достаточно указать его идентификационный номер в стартовой строке, в адресе ресурса. В ответе будет получена требуемая конфигурация обработчика и результат выполнения запроса.

Запрос

GET /api/v1/handlers/:id HTTP/1.1
Content-Type: application/json
Authorization: Bearer {token}

Ответ

HTTP/1.1 200 OK

{
    "_id": "5d8ccd2cc82fdf001127da07",
    "name": "Обработчик 01",
    "description": "Описание обработчика",
    "userCode": "/**\n * Makes the sum of two numbers\n * @param {number} a first\n * @param {number} b second\n */\nfunction process(a, b) {\n  const sum = a + b;\n  return { sum };\n}\n\n/**\n * @author `user_name`\n */\nmodule.exports = process;",
    "tagname": "hndl_S1lfE6H9Pr",
    "code": "function process(a, b) {\n    var sum = a + b;\n    return { sum: sum };\n}\nmodule.exports = process;\n",
    "bindings": {
        "importOrder": [
            "a",
            "b"
        ],
        "import": {
            "a": {
                "type": "number"
            },
            "b": {
                "type": "number"
            }
        },
        "exportType": "object",
        "export": {
            "sum": {
                "type": "number"
            }
        }
    },
    "libs": [],
    "success": true
}

Создание нового обработчика

Для создания нового обработчика в теле запроса необходимо указать обязательные поля и их значения. При этом структура самого обработчика может быть сформирована по аналогии с json-форматом, который отображается во вкладке "Код", в меню "Обработчики". В ответе от сервера будет получена сформированная конфигурация нового обработчика и результат выполнения запроса.

Запрос

POST /api/v1/handlers HTTP/1.1
Content-Type: application/json
Authorization: Bearer {token}

BODY

Ответ

HTTP/1.1 200 OK

BODY

Изменение обработчика

При помощи API платформы могут быть изменены и отредактированы некоторые поля обработчиков, например, такие как наименование, описание и т. д. Более же сложные и значительные действия, такие как рефакторинг кода, добавление или удаление новых переменных, изменение биндингов, т. е. связок между параметрами в обработчике и аргументами в модели, лучше производить в графическом интерфейсе платформы.

Запрос

PATCH /api/v1/handlers HTTP/1.1
Content-Type: application/json
Authorization: Bearer {token}

BODY

Ответ

HTTP/1.1 200 OK

BODY

Удаление обработчика

Чтобы удалить обработчик, нужно послать запрос DELETE /api/v1/handlers. В ответе будет получена его конфигурация и результат выполнения запроса.

Запрос

DELETE /api/v1/handlers HTTP/1.1
Content-Type: application/json
Authorization: Bearer {token}

Ответ

HTTP/1.1 200 OK

{
    "_id": "5d8cd5cec82fdf001127ebd8",
    "name": "Обработчик 03",
    "description": "sdgvdfb",
    "userCode": "/**\n * Makes the sum of two numbers\n * @param {number} a first\n * @param {number} b second\n */\nfunction process(a, b) {\n  const sum = a + b;\n  return { sum };\n}\n\n/**\n * @author `elisalena99@gmail.com`\n */\nmodule.exports = process;",
    "_options": null,
    "owner": "5d8a18d5d0025e0012fb6a34",
    "group": "5d8a18d4d0025e0012fb6a31",
    "tagname": "hndl_HylS0SL5Dr",
    "code": "function process(a, b) {\n    var sum = a + b;\n    return { sum: sum };\n}\nmodule.exports = process;\n",
    "bindings": {
        "importOrder": [
            "a",
            "b"
        ],
        "import": {
            "a": {
                "type": "number"
            },
            "b": {
                "type": "number"
            }
        },
        "exportType": "object",
        "export": {
            "sum": {
                "type": "number"
            }
        }
    },
    "libs": [],
    "time": 1569510862492,
    "success": true
}

Запуск тестирования обработчика

В функционале платформы предусмотрена такая функция, как тестирование кода, прописанного в обработчике. Оно может быть реализовано не только в графическом интерфейсе, но в том числе и с помощью программного интерфейса API. Для этого нужно отправить запрос POST /api/v1/handlers/test_code.

Запрос

POST /api/v1/handlers/test_code HTTP/1.1
Content-Type: application/json
Authorization: Bearer {token}

Ответ

HTTP/1.1 200 OK

BODY