Переменные запросов REST
В системе реализован механизм динамических переменных, которые автоматически подставляются в запросы REST-клиента, инициированные серверными скриптами.
Для использования этого механизма необходимо создать скрипт, который будет запускать REST запрос с подставленными значениями переменных.
Вы можете обратиться к уже созданному REST запросу, указав ссылку, или создать новый запрос в текущем скрипте.
В таблице Переменные запросов REST (sys_rest_request_variable) содержатся зашифрованные (AES-256) и незашифрованные записи переменных, которые используются в запросах REST и подставляются в скрипт динамически. Зашифрованные переменные, используемые для хранения ключей и секретов, расшифровываются при добавлении в запрос.
Используйте переменные в формате {param}
в URL, а также теле и заголовке запроса.
Чтобы использовать переменные, выполните следующие действия:
-
Создайте запрос REST, также вы можете воспользоваться методами SimpleRestRequest в шаге 2.
Должны быть указаны:
- Имя запроса REST
- URL конечной точки, для которого формируется запрос
- Тип доступа
- Тип авторизации
- Профиль аутентификации, если этого требует интеграция с сервисом
- Заголовки запроса REST
- Методы запроса REST. При необходимости вы также можете указать соответствующие параметры методов запроса.
-
Запуск серверного скрипта, который содержит REST запрос.
- В скрипт передается ссылка на предварительно сформированный REST запрос или в нем переопределяются необходимые методы объекта SimpleRestRequest.
- В конце скрипта запускается метод execute().
- Значения из переменных подставляются в запрос, предварительно расшифровываясь, если такая опция была активирована на их формах.
- Запрос отправляется на хост с расшифрованными значениями переменных.
-
Настройте запуск серверного скрипта при помощи бизнес-правила.
- При передаче в скрипт, наименование будет переведено в нижний регистр. Поэтому при создании записи задавайте уникальные регистронезависимые наименования параметров.
Используйте в наименовании латинские буквы, цифры [0..9], пробел и символ подчеркивания ( _ ).
-
При передаче в хедер, значение будет преобразовываться в соответствии с набором правил:
- Имя заголовка преобразуется в нижний регистр.
- Пробелы заменяются на дефисы.
- Первая буква имени и каждая буква, следующая за дефисом, преобразуются в буквы верхнего регистра.
Пример: incident caller → Incident-Caller
Поля формы Переменные запросов REST
Поле | Обязательно | Описание |
---|---|---|
Наименование | Да | Укажите название переменной. Наименование должно быть уникальными и регистронезависимым. |
Значение | Нет | Укажите значение переменной. Это значение будет передаваться в запросы REST, если флажок Зашифрованное снят. Длина переменной не может превышать 256 бит. |
Зашифрованное значение | Нет | Укажите значение, которое после сохранения записи будет зашифровано с использованием алгоритма AES-256. Это значение будет передаваться в запросы REST, если флажок Зашифрованное установлен. |
Зашифрованное | Нет | Установите флажок, чтобы передавать значение параметра, указанного в поле Зашифрованное значение. |
Система передает значение шифрованного пароля, только если были заполнены оба поля: Значение и Зашифрованное значение.
Создание переменной запросов
Чтобы создать новую переменную запросов REST, выполните следующие шаги:
- Перейдите на запись таблицы Переменные запросов REST, расположенной по адресу ({URL вашего экземпляра}/list/sys_rest_request_variable).
- Нажмите Создать и заполните поля формы.
- Нажмите Сохранить или Сохранить и выйти, чтобы применить изменения.
Проверка работоспособности
Для тестирования рекомендуется использовать:
- postman-echo.com/post для запросов POST.
- postman-echo.com/get для запросов GET.
Подробнее о типах запросов читайте в статье Настройки REST API.
-
Создайте две записи переменных, как описано в инструкции выше. Назовите их следующим образом:
- test1 – незашифрованная переменная.
- test2 – зашифрованная переменная.
-
Перейдите в навигаторе в Настройка системы → Серверные скрипты.
-
Создайте запись запроса, как в примере ниже.
const scriptJSON = {
'script': 'ss.info(new SimpleDateTime().getValue()); ss.info("{test}");'
}
const request = sws.restRequestV1();
request.setRequestUrl('https://postman-echo.com/post?bot1860462740:{test2}/sendMessage');
request.setQueryParameter('chat_id', '{test1}');
request.setQueryParameter('text', 'telegram {test2}');
request.setRequestMethod('POST');
request.setRequestBody(JSON.stringify(scriptJSON));
request.setRequestHeader('Test-header', 'a-{test2}-b-{test1}');
const response = request.execute();
ss.info(response.getBody());