Обработчики
Обработчики могут быть использованы, если необходимо дополнительно произвести обработку и внутреннее обогащение данных, полученных от подключенных устройств. В процессе обработки они являются ключевым звеном.
При помощи API может быть реализовано взаимодействие с обработчиками, предполагающее реализацию таких операций, как:
- Получение списка обработчиков.
- Получение информации об одном обработчике.
- Создание нового обработчика.
- Изменение обработчика.
- Удаление обработчика.
- Запуск тестирования обработчика.
Получение списка обработчиков
Для того чтобы получить полный список обработчиков, созданных пользователем и доступных ему, необходимо отправить запрос 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