Переменные
В APInita у сценария есть несколько типов переменных:
APInita использует шаблонизатор Twig, поэтому Вы можете использовать некоторые доступные функции и фильтры для преобразования данных внутри полей модулей.
Переменные модулей
Переменные модулей доступны для использования в полях внутри каждого модуля (за исключением Webhook) по цепочке от родителя к дочерним шагам. Каждый шаг имеет свой номер: 1, 2, 3 и так далее. Обращение к данным модуля идет через переменную вида "s1", где s - сокращенное название от step (шаг), а 1 - номер самого шага.
Например на шаге 6 модуля HTTP мы хотим использовать в "Полях запроса" значение "status": "ok" из 1-го шага, для этого мы пишем ключ (например: my_key) и указываем следующее значение:
{{ s1.body.status }} // выведет значение "ok"
Таким образом, запрос шага 6 будет содержать в себе поле вида: my_key=ok
Похожим образом мы можем обратиться к любому другому шагу и элементу данных модуля. Пример для шага 1, обращение к заголовку:
{{ s1.headers.date }} // Thu, 07 Dec 2023 07:05:02 GMT
Обращение к шагу 5:
{{ s5.body }} // 1 или 0, ответ от IF модуля
Для PHP модуля получить значение можно следующим образом:
$s1['body']['status']
Переменные сценария
Переменные сценария задаются нажатием на кнопку "Переменные сценария" (п.6). Далее использование этих переменных возможно в полях модулей (например в модуле HTTP и полях "Поля запроса"). Длина значения переменных ограничина 100 символами.
Переменная сценария доступна внутри глобальной переменной {{ scenario }} или $scenario для PHP модуля.
Например, если ключ переменной my_var, обращение будет выглядеть так:
{{ scenario.my_var }}
или
{{ scenario["my_var"] }}
или
$scenario["my_var"]
- для PHP модуля. Изменить значение переменной сценария можно либо вручную, либо через модуль PHP следующим способом:
$myVar = $scenario['my_var']; // получаем текущее значение переменной my_var, например ее значение "старое значение"
$newMyVarValue = "новое значение";
setVar("my_var", $newMyVarValue); // задаем новое значение переменной
Важный нюанс: новое значение глобальной переменной ($scenario['my_var']) внутри PHP модуля будет действовать только при следующем запуске сценария, поэтому если нужно использовать новое значение после его установки - задайте его через переменную ($newMyVarValue - из примера) и используйте эту переменную.
Переменные подключения
Если в HTTP-модуле указано подключение и его тип "Custom", Вы можете использовать глобальную переменную "connection" для доступа к переменным подключения:
{{ connection.body.my_key }} // получаем значение переменной my_key указанной в теле подключения
{{ connection.header.my_header }} // получаем значение переменной my_header указанной в заголовке подключения
Использовать данные переменные можно как в полях/заголовках запроса, так например и в самом URL-е запроса.
Аналогичным образом доступна глобальная переменная "connections" (s на конце), но уже для всех модулей. Обратиться к данным подключений типа "Custom" можно следующим образом:
{{ connections[5].body.my_key }} // получаем значение переменной my_key подключения с ID = 5
{{ connections[2].header.my_header }} // получаем значение переменной my_header подключения с ID = 2
ID подключения указан в списке подключений и при просмотре подключения.
Доступные теги, фильтры и функции Twig
Список доступных к использованию тегов:
if
for
set
Список доступных к использованию фильтров:
escape
raw
replace
length
date
dateLocal
date_modify
dateUtc
upper
lower
title
join
hash_hmac
hash
md5
json_decode
json_encode
split
last
first
Список доступных к использованию функций:
random
base64
Примеры использования:
{{ s1.body.status|upper }} // преобразует "ok" в "OK"
{% for key, value in s1.headers %} // запуск цикла по всем элементам массива
{{ key }}: {{ value }} // выведет каждый элемент массива s1.body в формате: "date: Thu, 07 Dec 2023 07:05:02 GMT"
{% endfor %} // конец цикла
{{ random() }} // выведет случайное число, например 15386094