HTTP ==== ``HTTPoutput`` |image0| Осуществляет вызов REST API к серверу REST. Используется выбранный метод. В качестве тела запроса используются входные данные в формате JSON. Заголовки будут взяты также из настроек блока. Если установлен флаг “Динамическая настройка”, то блок будет применять настройки, которые должны быть переданы через метадату посылки внутри объекта **HTTPoutput**. Конфигурация узла: ------------------ |image1| - **URI** - адрес REST API сервера ``str`` - **Заголовки** - указывает тип данных, передаваемых в теле сообщения, что помогает клиенту и серверу правильно интерпретировать содержимое. - **Метод** - HTTP методы определяют действия, которые клиент хочет выполнить с ресурсом на сервере, такие как GET (получение данных), POST (отправка данных), PUT (обновление данных) и DELETE (удаление данных). ``str`` При использовании метода **GET** - *body* не устанавливается. **body** - заполняется элементами из **DATA** и отправляется как строка ``str`` .. raw:: html
Динамическая настройка (Пример объекта METADATA.HTTPoutput): ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ *Json* .. code:: json { "uri": "http://scada.4iot.pro/api/example_journal_event", "payload": "Example payload", "headers":{ "FirstHeader": "ValueOfFirsHeader", "SecondHeader": "ValueOfSecondHeader" }, "s3":{ "file": "file.xml", "bucket": "example_bucket", "contentType": "aplication/xml", "server": "yandex.cloud", "key": "some_key", "secret":"some_secrte_key" } } Единственное обязательное поле в объекте настроек HTTPoutput это **uri**, остальные добавляются по необходимости. При использовании динамической настройки в тело запроса не будут включены входные данные, а будет использовано содержимое поля **payload**, если оно есть. Если этого поля нет, то тело запроса останется пустым. Можно указать метод при помощи поля **method** (по умолчанию: ``POST``) Поле “headers” содержит заголовки, которые необходимо добавить к запросу. Также будут добавлены и заголовки, добавленные через форму настройки блока. Блок HTTP output поддерживает AWS s3 авторизацию для доступа к bucket серверу. Она настраивается полем **s3**: - **file** - указывается имя файла к которому запрашивается доступ. ``str`` - **bucket** - имя хранилища ``str`` - **contentType** - указывается формат запрашиваемого файла в спецификации http ``str`` - **server** - содержит адрес или домен сервера с хранилищем ``str`` - **key** - должен содержать идентификатор ключа ``str`` - **secret** - содержит ключ ``str`` .. raw:: html
Пример использования -------------------- Для проверки того, что наш блок работает исправно, воспользуемся сервисом `Request Inspector `__. Следует создать конечный хост и скопировать ссылку на него. В качестве примера соберем такую цепочку: |image2| Полученную ссылку мы ставим в **URI**, а поле **Заголовки** заполняем для чтения json объектов ``application/json`` (смотреть картинку ниже). Чтобы наша посылка отобразилась, выберем метод **POST**. |image3| После сохранения цепочки мы сможем наблюдать на сервисе подобную картину: |image4| В случае использования *Динамической настройки*: ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ |image5| Данный код вставляется в блок *Python*: .. code:: python import json data = { "uri": "https://01j4kjf5rcfm5e2fdafbxgmcy800-734a5890450a402edd6c.requestinspector.com", "payload": obj["DATA"], "method": "POST", "headers":{ "Content-Type": "application/json" }} obj['METADATA']["HTTPoutput"]={} obj['METADATA']["HTTPoutput"]= data return obj Получаем такой-же результат, что и в первом случае. .. raw:: html
.. |image0| image:: ../../_img/http_out_icon.png .. |image1| image:: ../../_img/http_out_settings.png .. |image2| image:: ../../_img/http_out_chain.png .. |image3| image:: ../../_img/http_out_settings_example1.png .. |image4| image:: ../../_img/http_out_inspector.png .. |image5| image:: ../../_img/http_out_chain2.png