HTTP-запросы типа GET. Отправка запроса и обработка ответа в формате JSON. Настройка подключения, пути передачи данных и сценария
Введение
Comindware Platform позволяет отправлять HTTP-запросы типов GET
, POST
, PUT
, DELETE
для взаимодействия с внешними системами.
Здесь представлен пример настройки подключения, пути передачи данных и сценария для отправки 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"
},
]
}
Настройка подключения
- Откройте раздел «Администрирование» — «Подключения».
-
В меню «Создать» выберите пункт «Подключения REST и OData» — «Отправка HTTP-запросов».
Создание подключения для отправки HTTP-запросов -
Настройте подключение для отправки HTTP-запросов со следующими параметрами:
- URI — http://
/api. Символ /
в конце URI не требуется. - Формат данных — JSON. Также поддерживаются XML и простой текст, но здесь рассматривается обработка данных в формате JSON.
- URI — http://
-
Остальные параметры подключения настройте в соответствии с используемым сервером. См. статью «Отправка HTTP-запросов. Настройка подключения».
Настройка пути передачи данных
- Откройте раздел «Администрирование» — «Пути передачи данных».
-
В меню «Создать» выберите пункт «Подключения REST и OData» — «Отправка HTTP-запросов».
Создание пути передачи данных для отправки HTTP-запросов -
Настройте путь передачи данных для отправки HTTP-запросов на вкладках «Основные свойства», «Атрибуты сообщений», «Интеграция».
Основные свойства
- Подключение — выберите ранее созданное подключение для отправки HTTP-запросов.
- Системное имя — введите системное имя пути передачи данных латинскими буквами.
- Отключить — установите этот флажок, если требуется деактивировать путь передачи данных.
- Описание — введите наглядное описание назначения пути передачи данных.
Атрибуты сообщений
- Тип сообщения — выберите пункт «Отправка HTTP-запросов».
-
Запрос — добавьте атрибут
queryParams
(произвольное системное имя, которое будет указано в поле «Атрибут для параметров запроса» на вкладке «Интеграция» и в действии сценария «Изменить значения переменных») типа «Объект».- Установите флажок «Массив».
-
Установите флажок у атрибута
queryParams
и добавьте его дочерние атрибуты:name
(предопределённое системное имя) типа «Строка» — этот атрибут будет содержать имена параметров запроса.- value (предопределённое системное имя) типа «Строка» — этот атрибут будет содержать значения параметров запроса.
В эти атрибуты будут передаваться пары ключ-значение параметров запроса.
-
Ответ — добавьте атрибут с системным именем
orders
(совпадает с именем массива данных заказов в ответе сервера на HTTP-запрос) типа «Объект».- Установите флажок «Массив»
- Установите флажок у атрибута
orders
и добавьте его дочерние атрибуты:- orderAmount (совпадает с именем параметра из ответа сервера) типа «Число» — этот атрибут будет содержать сумму заказа.
- orderNumber (совпадает с именем параметра из ответа сервера) типа «Строка» — этот атрибут будет содержать номер заказа.
- orderStatus (совпадает с именем параметра из ответа сервера) типа «Строка» — этот атрибут будет содержать статус заказа. В эти атрибуты будут записываться значения из ответа сервера на запрос.
- Ответ с ошибкой — настройте атрибуты для получения ответа сервера с ошибкой аналогично атрибутам запроса и ответа.
Интеграция
- Метод запроса — выберите пункт «GET».
- Шаблон пути запроса — введите
orders
(фактический путь к HTTP-запросу на сервере), этот суффикс будет добавлен к URI, указанному в свойствах подключения для отправки HTTP-запросов. Например, для URIhttp://<hostname>/api
результирующий путь запроса будетhttp://<hostname>/api/orders
. - Атрибут для сериализации в тело запроса — этот атрибут используется для методов
POST
иPUT
, в него следует вводить через запятую системные имена атрибутов из таблицы «Запрос» на вкладке «Атрибуты сообщений». Здесь это поле не используется. -
Атрибут для параметров запроса — введите системное имя атрибута из таблицы «Запрос» на вкладке «Атрибуты сообщений».
Настройка интеграции в свойствах пути передачи данных для отправки HTTP-запросов -
Атрибуты для десериализации ответа без ошибки и Атрибуты для десериализации ответа с ошибкой
-
Создайте одну строку в каждой таблице и введите символ
$
в столбцы «Путь к атрибуту» и «Выражение на языке запросов».Настройка атрибутов для десериализации ответа в пути передачи данных для отправки HTTP-запросов
-
Настройка сценария отправки HTTP-запроса
-
Создайте сценарий, например, выполняющийся по нажатию кнопки.
Исходный сценарий, выполняющийся по нажатию кнопки -
В свойствах автоматически созданного действия «Сменить контекст» укажите целевой шаблон записи, содержащий атрибуты для HTTP-запроса и ответа.
Настройка контекстного шаблона для отправки HTTP-запроса -
Добавьте и настройте действие «Изменить значения переменных».
- Операция со значениями переменных — Добавить.
- Набор переменных —
queryParamsContainer
(произвольное системное имя), из этого массива последующее действие «Отправить сообщение» передаст параметры в HTTP-запрос. -
В таблице атрибутов создайте два атрибута
queryParams
(это системное имя массива атрибутов запроса, указанное на вкладке «Атрибуты сообщений» в свойствах пути передачи данных), которые будут содержать пары ключ-значение для параметров HTTP-запроса в двух дочерних атрибутах:name
— введите формулу с именем параметра HTTP-запроса (например,"orderDate"
,"clientName"
).-
value
— введите формулу, выражение на N3 или выберите атрибут с необходимым значением параметра HTTP-запроса.Примечание
Чтобы передать в HTTP-запрос несколько параметров, создайте необходимое количество атрибутов с одинаковым системным именем и настройте их дочерние атрибуты.
Настройка переменных для передачи в качестве параметров HTTP-запроса
-
Добавьте и настройте действие «Отправить сообщение».
- Подключение — выберите подключение для отправки HTTP-запросов.
- Путь передачи данных — выберите ранее настроенный путь для передачи данных HTTP-запроса.
- Переменная с сообщением — введите системное имя набора переменных, указанное в предшествующем действии «Изменить значения переменных».
- Переменная для успешного ответа — введите системное имя переменной, в которую будет помещён ответ сервера на HTTP-запрос, эта переменная будет использоваться в последующем действии «Повторять по количеству объектов».
-
Переменная для ответа с ошибкой — введите системное имя переменной, в которую будет помещён ответ сервера в случае ошибки.
Настройка действия сценария для отправки HTTP-запроса
-
Добавьте и настройте действие «Повторять по количеству объектов».
- Переменная — введите имя переменной, в которую будут помещены объекты, полученные из ответа на HTTP-запрос. Эта переменная будет использоваться для обращения к объектам в ответе от сервера в последующем действии «Изменить значения атрибутов».
-
Атрибут или выражение для поиска объектов — введите формулу вида
$$response->orders
, гдеresponse
— имя переменной для успешного ответа, указанное в свойствах действия «Отправить сообщение»,orders
— системное имя атрибута ответа, указанное на вкладке «Атрибуты сообщений» в свойствах пути передачи данных.Настройка цикла в сценарии для получения данных из ответа на HTTP-запрос
-
Внутри действия «Повторять по количеству объектов» добавьте действие «Изменить значения атрибутов».
- В действии «Изменить значения атрибутов» на вкладке «Дополнительно» установите флажок «Сбрасывать кэш значений».
-
На вкладке «Основные»:
- В таблице атрибутов добавьте атрибуты, значения которых следует заполнить из полученного ответа от сервера.
-
В столбце «Значение» для каждого атрибута введите формулу вида
$$loopiterator->objectName
, гдеloopiterator
— имя переменной, заданное в действии «Повторять по количеству объектов», аobjectName
— имя объекта в ответе от сервера (см. пример ответа сервера).Настройка действия в сценарии для передачи данных из ответа на HTTP-запроса в атрибуты шаблона записи
-
Результирующий сценарий должен выглядеть, как показано на следующей иллюстрации.
Сценарий для отправки HTTP-запроса и получения данных из ответа сервера -
Проверьте работу приложения: сценарий должен отправлять HTTP-запрос и записывать данные из ответа сервера в атрибуты шаблона.
Эта статья была полезна 1 чел.