Перейти к основному содержимому

Блок HTTP-запрос

Блок HTTP-запрос в J‑Graph позволяет боту обмениваться данными со сторонними сервисами по протоколу HTTP, а также сохранять полученные данные в переменные.

Блок HTTP-запрос

Настройки блока

Чтобы добавить блок в сценарий:

  1. Выберите HTTP-запрос в списке блоков действий.
  2. Задайте обязательные параметры запроса:
    • Метод запроса:
      • GET
      • POST
      • PUT
      • DELETE
    • URL, на который будет отправляться запрос.

Вы можете задать дополнительные настройки запроса на вкладках Response, Body и Headers.

Настройка метода и URL HTTP-запроса

URL запроса

По указанному URL бот будет отправлять и получать данные.

В URL запроса вы можете использовать подстановки значений в скобках {{}}. Внутри скобок может находиться любое допустимое выражение на JavaScript — например, ссылка на встроенную переменную:

  • {{$session.url}} (если в переменной хранится полный URL запроса)

  • https://{{$injector.hostname}}/endpoint

  • https://example.com?query={{$request.query}}

    подсказка
    Укажите в качестве переменной $request.query, чтобы передать в URL текст последнего запроса клиента.

Бот автоматически подставит значения выражений в URL перед выполнением запроса.

Заголовки запроса

На вкладке Headers вы можете добавить HTTP-заголовки запроса, заполнив поля Заголовок и Значение. В заголовках вы также можете использовать переменные.

Настройка заголовков HTTP-запроса

Тело запроса

На вкладке Body вы можете добавить тело запроса. Здесь можно указывать данные в любом формате (JSON, XML, произвольный текст), а также добавлять переменные.

Настройка тела HTTP-запроса

В примере тело запроса указано в формате JSON. Бот автоматически подставит в тело запроса значения переменных $client.name и $client.age.

предупреждение
При добавлении переменных в объект JSON необходимо учитывать, какой тип данных содержится в переменной. В примере переменная $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-объект, с которым сценарий может далее работать.

подсказка
Ответы в формате XML также конвертируются в JavaScript-объекты. Если же сервер вернул ответ в другом формате, он сохранятся в $httpResponse как строка без какой-либо обработки.

Чтобы сохранить данные из определенного поля объекта, на вкладке Response укажите:

  • Имя переменной. Значение будет сохранено в сценарии как $session.<имя переменной>.

  • Значение — выражение с использованием $httpResponse для доступа к нужным полям ответа.

    предупреждение
    В имени переменной используйте символы Aa–Zz, _, 0–9. Первым символом в имени должна быть буква. Нельзя использовать зарезервированные слова JavaScript.
Обработка ответа на HTTP-запрос

Если запрос будет выполнен успешно, бот создаст переменные $session.quoteText и $session.quoteAuthor и запишет в них значения из ответа сервера.

Переходы из блока

От блока HTTP-запрос можно провести до двух связей в другие шаги сценария:

  • Успешная отправка, если в ответ на запрос сервер вернул код ответа от 200 до 299.
  • Ошибка, если сервер вернул любой другой ответ.
подсказка
Код ответа сохраняется в переменную $session.httpStatus.