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