Блок HTTP-запрос
Блок HTTP-запрос в J‑Graph позволяет боту обмениваться данными со сторонними сервисами по протоколу HTTP, а также сохранять полученные данные в переменные.
Настройки блока
Чтобы добавить блок в сценарий:
- Выберите HTTP-запрос в списке блоков действий.
- Задайте обязательные параметры запроса:
- Метод запроса:
GET
POST
PUT
DELETE
- URL, на который будет отправляться запрос.
- Метод запроса:
Вы можете задать дополнительные настройки запроса на вкладках Response, Body и Headers.
URL запроса
По указанному URL бот будет отправлять и получать данные.
В URL запроса вы можете использовать подстановки значений в скобках {{}}
.
Внутри скобок может находиться любое допустимое выражение на JavaScript — например, ссылка на встроенную переменную:
-
{{$session.url}}
(если в переменной хранится полный URL запроса) -
https://{{$injector.hostname}}/endpoint
-
https://example.com?query={{$request.query}}
подсказкаУкажите в качестве переменной$request.query
, чтобы передать в URL текст последнего запроса клиента.
Бот автоматически подставит значения выражений в URL перед выполнением запроса.
Заголовки запроса
На вкладке Headers вы можете добавить HTTP-заголовки запроса, заполнив поля Заголовок и Значение. В заголовках вы также можете использовать переменные.
Тело запроса
На вкладке Body вы можете добавить тело запроса. Здесь можно указывать данные в любом формате (JSON, XML, произвольный текст), а также добавлять переменные.
В примере тело запроса указано в формате JSON.
Бот автоматически подставит в тело запроса значения переменных $client.name
и $client.age
.
$client.name
указана в кавычках, потому что она содержит данные строкового типа, а $client.age
без кавычек, потому что содержит число.Обработка ответа
В ответ на запрос сервер обычно возвращает данные, которые можно обработать или вывести клиенту. Для этого на вкладке Response вы можете указать, какие данные из ответа вы хотите сохранить в новые переменные.
Например, по адресу https://api.forismatic.com/api/1.0/?method=getQuote&format=json&lang=ru
сервер возвращает следующий ответ:
{
"quoteText": "Текст цитаты",
"quoteAuthor": "Автор цитаты",
"senderName": "Кто опубликовал цитату",
"senderLink": "Ссылка на профиль публикатора цитаты",
"quoteLink": "Ссылка на цитату"
}
JAICP сохраняет этот ответ в переменную $httpResponse
.
Поскольку это ответ в формате JSON, JAICP автоматически конвертирует его в JavaScript-объект, с которым сценарий может далее работать.
$httpResponse
как строка без какой-либо обработки.Чтобы сохранить данные из определенного поля объекта, на вкладке Response укажите:
-
Имя переменной. Значение будет сохранено в сценарии как
$session.<имя переменной>
. -
Значение — выражение с использованием
$httpResponse
для доступа к нужным полям ответа.предупреждениеВ имени переменной используйте символы Aa–Zz, _, 0–9. Первым символом в имени должна быть буква. Нельзя использовать зарезервированные слова JavaScript.
Если запрос будет выполнен успешно,
бот создаст переменные $session.quoteText
и $session.quoteAuthor
и запишет в них значения из ответа сервера.
Переходы из блока
От блока HTTP-запрос можно провести до двух связей в другие шаги сценария:
- Успешная отправка, если в ответ на запрос сервер вернул код ответа от 200 до 299.
- Ошибка, если сервер вернул любой другой ответ.
$session.httpStatus
.