Перейти к содержанию

HTTP-запросы типа GET. Отправка запроса и обработка ответа в формате JSON. Настройка подключения, пути передачи данных и сценария

Введение

Comindware Platform позволяет отправлять HTTP-запросы типов GETPOSTPUTDELETE для взаимодействия с внешними системами.

Здесь представлен пример настройки подключения, пути передачи данных и сценария для отправки HTTP-запросов типа GET и записи данных из ответа сервера в формате JSON в атрибуты шаблона записи.

Настройка для обработки данных в формате XML и простого текста будет аналогичной.

Прикладная задача

Здесь мы рассмотрим настройку отправки GET-запросов на сервер http://.

Во всех примерах подставьте реальный адрес своего сервера вместо http://<hostname>/api

  • Базовый URL для HTTP-запросов: http://<hostname>/api
  • Путь для запроса данных заказов: http://<hostname>/api/orders
  • Сценарий формирует и отправляет HTTP-запрос на сервер и записывает полученные данные в атрибуты.
  • Запрос содержит параметры orderDate с датой создания заказов и clientName с идентификатором клиента.
  • В ответ на запрос сервер возвращает JSON-ответ с массивом данных заказов следующего вида:
{ 
"error": false,
"status": "ok",
"statusCode": 200,
"orders": [
{
"orderAmount": 1000,
"orderNumber": "Order-1",
"orderStatus": "Fulfilled"
},
{
"orderAmount": 5000,
"orderNumber": "Order-2",
"orderStatus": "Canceled"
},
]
}

Настройка подключения

  1. Откройте раздел «Администрирование» — «Подключения».
  2. В меню «Создать» выберите пункт «Подключения REST и OData» — «Отправка HTTP-запросов».

    Создание подключения для отправки HTTP-запросов
    Создание подключения для отправки HTTP-запросов

  3. Настройте подключение для отправки HTTP-запросов со следующими параметрами:

    • URI — http:///api. Символ / в конце URI не требуется.
    • Формат данных — JSON. Также поддерживаются XML и простой текст, но здесь рассматривается обработка данных в формате JSON.
  4. Остальные параметры подключения настройте в соответствии с используемым сервером. См. статью «Отправка HTTP-запросов. Настройка подключения».

Настройка подключения для отправки HTTP-запросов

Настройка подключения для отправки HTTP-запросов

Настройка пути передачи данных

  1. Откройте раздел «Администрирование» — «Пути передачи данных».
  2. В меню «Создать» выберите пункт «Подключения REST и OData» — «Отправка HTTP-запросов».

    Создание пути передачи данных для отправки HTTP-запросов
    Создание пути передачи данных для отправки HTTP-запросов

  3. Настройте путь передачи данных для отправки HTTP-запросов на вкладках «Основные свойства», «Атрибуты сообщений», «Интеграция».

Основные свойства

  • Подключение — выберите ранее созданное подключение для отправки HTTP-запросов.
  • Системное имя — введите системное имя пути передачи данных латинскими буквами.
  • Отключить — установите этот флажок, если требуется деактивировать путь передачи данных.
  • Описание — введите наглядное описание назначения пути передачи данных.

Настройка подключения для отправки HTTP-запросов

Настройка подключения для отправки HTTP-запросов

Атрибуты сообщений

  • Тип сообщения — выберите пункт «Отправка HTTP-запросов».
  • Запрос — добавьте атрибут queryParams (произвольное системное имя, которое будет указано в поле «Атрибут для параметров запроса» на вкладке «Интеграция» и в действии сценария «Изменить значения переменных») типа «Объект».

    • Установите флажок «Массив».
    • Установите флажок у атрибута queryParams и добавьте его дочерние атрибуты:

      • name (предопределённое системное имя) типа «Строка» — этот атрибут будет содержать имена параметров запроса.
      • value (предопределённое системное имя) типа «Строка» — этот атрибут будет содержать значения параметров запроса.

      В эти атрибуты будут передаваться пары ключ-значение параметров запроса.

  • Ответ — добавьте атрибут с системным именем orders (совпадает с именем массива данных заказов в ответе сервера на HTTP-запрос) типа «Объект».

    • Установите флажок «Массив»
    • Установите флажок у атрибута orders и добавьте его дочерние атрибуты:
      • orderAmount (совпадает с именем параметра из ответа сервера) типа «Число» — этот атрибут будет содержать сумму заказа.
      • orderNumber  (совпадает с именем параметра из ответа сервера) типа «Строка» — этот атрибут будет содержать номер заказа.
      • orderStatus (совпадает с именем параметра из ответа сервера) типа «Строка» — этот атрибут будет содержать статус заказа. В эти атрибуты будут записываться значения из ответа сервера на запрос.
  • Ответ с ошибкой — настройте атрибуты для получения ответа сервера с ошибкой аналогично атрибутам запроса и ответа.

Настройка атрибутов сообщения в свойствах пути передачи данных для отправки HTTP-запросов

Настройка атрибутов сообщения в свойствах пути передачи данных для отправки HTTP-запросов

Интеграция

  • Метод запроса — выберите пункт «GET».
  • Шаблон пути запроса — введите orders (фактический путь к HTTP-запросу на сервере), этот суффикс будет добавлен к URI, указанному в свойствах подключения для отправки HTTP-запросов. Например, для URI http://<hostname>/api результирующий путь запроса будет http://<hostname>/api/orders.
  • Атрибут для сериализации в тело запроса — этот атрибут используется для методов POST и PUT, в него следует вводить через запятую системные имена атрибутов из таблицы «Запрос» на вкладке «Атрибуты сообщений». Здесь это поле не используется.
  • Атрибут для параметров запроса — введите системное имя атрибута из таблицы «Запрос» на вкладке «Атрибуты сообщений».

    Настройка интеграции в свойствах пути передачи данных для отправки HTTP-запросов
    Настройка интеграции в свойствах пути передачи данных для отправки HTTP-запросов

  • Атрибуты для десериализации ответа без ошибки и  Атрибуты для десериализации ответа с ошибкой

    • Создайте одну строку в каждой таблице и введите символ $ в столбцы «Путь к атрибуту» и «Выражение на языке запросов».

      Настройка атрибутов для десериализации ответа в пути передачи данных для отправки HTTP-запросов
      Настройка атрибутов для десериализации ответа в пути передачи данных для отправки HTTP-запросов

Настройка сценария отправки HTTP-запроса

  1. Создайте сценарий, например, выполняющийся по нажатию кнопки.

    Исходный сценарий, выполняющийся по нажатию кнопки
    Исходный сценарий, выполняющийся по нажатию кнопки

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

    Настройка контекстного шаблона для отправки HTTP-запроса
    Настройка контекстного шаблона для отправки HTTP-запроса

  3. Добавьте и настройте действие «Изменить значения переменных».

    • Операция со значениями переменных — Добавить.
    • Набор переменных — queryParamsContainer (произвольное системное имя), из этого массива последующее действие «Отправить сообщение» передаст параметры в HTTP-запрос.
    • В таблице атрибутов создайте два атрибута queryParams (это системное имя массива атрибутов запроса, указанное на вкладке «Атрибуты сообщений» в свойствах пути передачи данных), которые будут содержать пары ключ-значение для параметров HTTP-запроса в двух дочерних атрибутах:

      • name — введите формулу с именем параметра HTTP-запроса (например, "orderDate""clientName").
      • value — введите формулу, выражение на N3 или выберите атрибут с необходимым значением параметра HTTP-запроса.

        Примечание

        Чтобы передать в HTTP-запрос несколько параметров, создайте необходимое количество атрибутов с одинаковым системным именем и настройте их дочерние атрибуты.

        Настройка переменных для передачи в качестве параметров HTTP-запроса
        Настройка переменных для передачи в качестве параметров HTTP-запроса

  4. Добавьте и настройте действие «Отправить сообщение».

    • Подключение — выберите подключение для отправки HTTP-запросов.
    • Путь передачи данных — выберите ранее настроенный путь для передачи данных HTTP-запроса.
    • Переменная с сообщением — введите системное имя набора переменных, указанное в предшествующем действии «Изменить значения переменных».
    • Переменная для успешного ответа — введите системное имя переменной, в которую будет помещён ответ сервера на HTTP-запрос, эта переменная будет использоваться в последующем действии «Повторять по количеству объектов».
    • Переменная для ответа с ошибкой — введите системное имя переменной, в которую будет помещён ответ сервера в случае ошибки.

      Настройка действия сценария для отправки HTTP-запроса
      Настройка действия сценария для отправки HTTP-запроса

  5. Добавьте и настройте действие «Повторять по количеству объектов».

    • Переменная — введите имя переменной, в которую будут помещены объекты, полученные из ответа на HTTP-запрос. Эта переменная будет использоваться для обращения к объектам в ответе от сервера в последующем действии «Изменить значения атрибутов».
    • Атрибут или выражение для поиска объектов — введите формулу вида $$response->orders, где response — имя переменной для успешного ответа, указанное в свойствах действия «Отправить сообщение», orders — системное имя атрибута ответа, указанное на вкладке «Атрибуты сообщений» в свойствах пути передачи данных.

      Настройка цикла в сценарии для получения данных из ответа на HTTP-запрос
      Настройка цикла в сценарии для получения данных из ответа на HTTP-запрос

  6. Внутри действия «Повторять по количеству объектов» добавьте действие «Изменить значения атрибутов».

  7. В действии «Изменить значения атрибутов» на вкладке «Дополнительно» установите флажок «Сбрасывать кэш значений».
  8. На вкладке «Основные»:

    • В таблице атрибутов добавьте атрибуты, значения которых следует заполнить из полученного ответа от сервера.
    • В столбце «Значение» для каждого атрибута введите формулу вида $$loopiterator->objectName, где loopiterator — имя переменной, заданное в действии «Повторять по количеству объектов», а objectName — имя объекта в ответе от сервера (см. пример ответа сервера).

      Настройка действия в сценарии для передачи данных из ответа на HTTP-запроса в атрибуты шаблона записи
      Настройка действия в сценарии для передачи данных из ответа на HTTP-запроса в атрибуты шаблона записи

  9. Результирующий сценарий должен выглядеть, как показано на следующей иллюстрации.

    Сценарий для отправки HTTP-запроса и получения данных из ответа сервера
    Сценарий для отправки HTTP-запроса и получения данных из ответа сервера

  10. Проверьте работу приложения: сценарий должен отправлять HTTP-запрос и записывать данные из ответа сервера в атрибуты шаблона.

К началу