Обработка входящих запросов (exec)

Обзор

Производит обработку входящих запросов с помощью служебных сценариев.

При этом возможны следующие варианты обработки.

Обработчик ролевого приложения

Запрос должен быть авторизован под учетной записью пользователя, в качестве обработчика запускается служебный сценарий ролевого приложения. Выбор ролевого приложения происходит на основе заголовка Referer, который содержит URI ролевого приложения:

Referer: http://<ServerIP[:Port]>/app/<RoleappFolder>

Этот заголовок автоматически генерируется браузером при запросах из веб-приложения.

Обработчик веб-хуков внешних систем.

Запрос должен содержать заголовок Authorization со значением Bearer <local_token>, где <local_token> – значение поля token_local из канала интеграции. В качестве обработчика запускается служебный сценарий соответствующий каналу интеграции.

Authorization: Bearer cabcf10d692d5f8f386974d435997ea5

Запросы

HTTP verb Endpoint Описание

POST

/exec

Запуск обработчика входящих запросов с передачей тела

GET

/exec

Запуск обработчика входящих запросов


Запуск обработчика входящих запросов с передачей тела

Запрос

В теле запроса размещается произвольный JSON-объект. Он будет доступен в обработчике инициированного служебного сценария в качестве стартового параметра 4. Параметры доступны в любое время через функцию выражений startparam(N), где N – номер параметра. Обработчик сценария в параметрах запуска получит:

Table 1. Значения параметров обработчика сценариев
Функция Описание

startparam(1)

Представление JSON-объекта связанной с запросом сущности ролевого приложения или канала интеграции.

startparam(2)

Название метода из HTTP-запроса. Всегда "POST".

startparam(3)

URL из HTTP-запроса. Всегда "/exec".

startparam(4)

JSON-объект с телом запроса. Если в теле передано что-либо другое, то оно также будет доступно.

startparam(5)

Список заголовков из HTTP-запроса.

startparam(6)

IP-адрес отправителя HTTP-запроса.

startparam(7)

Протокол HTTP-запроса. Всегда "http".

Пример запроса
POST /exec HTTP/1.1
Referer: http://192.168.1.2:5800/app/folder/index.html
Content-Type: application/json; charset=utf-8

{
  "method": "myMethod1",
  "m_param": 1,
  "dt": "2019-11-01T11:01:59Z",
  "abc": "Kу-ку",
  "isSmth": true,
  "a": [1,5,"aaa"],
  "o": {
    "x": 1,
    "y": "abc",
    "z": {
      "z1": [],
      "z2": {},
      "z3": null
    }
  }
}
Параметры запроса

Запрос может иметь необязательный параметр ?timeout=<sec> в query string URL’а. Если он присутствует, принимаются целочисленные значения больше нуля. Данный параметр может лишь уменьшить время ожидания завершения сценария. Максимальное время ожидания настраивается в поле opts.recv_timeout соответствующей сущности (roleapp или integration_point для типа public) или в поле recv_timeout секции соответствущего типа (не public) файла webservices.json.

Ответ

Ответ возвращается после завершения инициированного обработчика сценария. В результате работы сценария или группы вложенных друг в друга сценариев значения локальных переменных принимают окончательные значения. Часть значений переменных используется при подготовке HTTP-ответа. Сопоставление происходит по именам переменных:

Имя переменной Назначение

response_code

HTTP код ответа, по умолчанию 200.

response_headers

Дополнительные заголовки ответа в формате JSON. По умолчанию пустая строка и только стандартные HTTP-заголовки. Если среди указанных заголовков отсутствует стандартный заголовок Content-Type, то по умолчанию его значение устанавливается в application/octet-stream.

response_content

Тело ответа. По умолчанию отсутствует.

Пример ответа
HTTP/1.1 200 OK
Content-Type: application/json; charset=utf-8
Some-Header: header value

Тело ответа

Запуск обработчика входящих запросов

Запрос

Обработчик сценария в параметрах запуска получит:

Table 2. Значения параметров обработчика сценариев
Функция Описание

startparam(1)

Представление JSON-объекта связанной с запросом сущности ролевого приложения или канала интеграции.

startparam(2)

Название метода из HTTP-запроса. Всегда "POST".

startparam(3)

URL из HTTP-запроса. Всегда "/exec".

startparam(5)

Список заголовков из HTTP-запроса.

startparam(6)

IP-адрес отправителя HTTP-запроса.

startparam(7)

Протокол HTTP-запроса. Всегда "http".

Пример запроса
GET /exec HTTP/1.1
Referer: http://192.168.1.2:5800/app/folder/index.html
Content-Type: application/json; charset=utf-8
Параметры запроса

Запрос может иметь необязательный параметр ?timeout=<sec> в query string URL’а. Если он присутствует, принимаются целочисленные значения больше нуля. Данный параметр может лишь уменьшить время ожидания завершения сценария. Максимальное время ожидания настраивается в поле opts.recv_timeout соответствующей сущности (roleapp или integration_point для типа public) или в поле recv_timeout секции соответствущего типа (не public) файла webservices.json.

Ответ

Ответ возвращается после завершения инициированного обработчика сценария. В результате работы сценария или группы вложенных друг в друга сценариев значения локальных переменных принимают окончательные значения. Часть значений переменных используется при подготовке HTTP-ответа. Сопоставление происходит по именам переменных:

Имя переменной Назначение

response_code

HTTP код ответа, по умолчанию 200.

response_headers

Дополнительные заголовки ответа в формате JSON. По умолчанию пустая строка и только стандартные HTTP-заголовки. Если среди указанных заголовков отсутствует стандартный заголовок Content-Type, то по умолчанию его значение устанавливается в application/octet-stream.

response_content

Тело ответа. По умолчанию отсутствует.

Пример ответа
HTTP/1.1 200 OK
Content-Type: application/json; charset=utf-8
Some-Header: header value

Тело ответа