Вызов внешних сервисов по HTTP(s) из потоковых обработчиков#
Данный сценарий выполняется пользователем, создающим *.conf-файл для загрузки в потоковой обработчик (находится вне ролевой модели, является инициатором создания интеграции).
Для того, чтобы осуществлять вызов внешних сервисов по HTTP(s) из потокового обработчика, необходимо:
Внести изменения в файл *.conf.
В шагах трансформации и агрегации предусмотрена возможность обращения к сторонним сервисам по REST-api. Для этого необходимо в описании потока в файле *.conf добавить параметры:
restUrls— объект из id, по которому будет происходить обращение к функции:url— адрес внешнего сервиса;type— формат ответа JSON, XML, AVRO. Значение по умолчанию — json;schema— список схем для проверки ответа;checkMimeType— признак проверки MIME type из заголовка ответа Content-Type на соответствие с параметромtype. Значение по умолчанию — true.
restSslProperties— опциональные настройки ssl; используются в случае, если подключение к сторонним сервисам производится с помощью ssl-соединения (ssl.keystore.location,ssl.keystore.password,ssl.key.password,ssl.truststore.location,ssl.truststore.password,ssl.protocol,ssl.ciphers).type— используемый клиент, может принимать значения apache или default.timeout— тайм-аут в миллисекундах, используемый в Apache клиенте для получения значения вызова, по умолчанию 10000.
Пример конфигурации (файл .conf)
flow: {
name: "Event Process test"
source: [${source}]
restUrls {
testGet: {
url: "https://localhost:12345/test"
type: "xml"
schema: [
{
source: "file"
path: "/file/path/to/xml/schema"
},{
source: "classpath"
path: "/path/to/default/xml/schema"
default: true }
]
checkMimeType: true
}
}
restSslProperties {
"ssl.keystore.location" : "/path/to/jks"
"ssl.keystore.password" : "pass"
"ssl.truststore.location" : "/path/to/jks"
"ssl.truststore.password" : "pass"
"ssl.key.password" : "pass"
}
}
Внести изменения в файл *.tr.
Для вызова внешнего сервиса по HTTP(s) в файле *.tr используются функции:
getRequest(«url-id», «allow-redirects», «headers») — для отправки GET запросов;
postRequest(«url-id», «allow-redirects», «headers», «body») — для отправки POST запросов;
deleteRequest(«url-id», «allow-redirects», «headers») — для отправки DELETE запросов;
putRequest(«url-id», «allow-redirects», «headers», «body») — для отправки PUT запросов,
где:
url-id — alias url из файла конфигурации *.conf (в примере файла конфигурации «testGet»);
allow-redirects — параметр REST-запроса, отвечает за перенаправление запроса;
headers — параметр REST-запроса, заголовки ключ-значение;
body — параметр REST-запроса, тело запроса.
Пример запроса:
curl -X get -H "input-header: test" http://localhost:12345/test
По результатам вызова функции будет сформировано сообщение вида:
{"statusCode":200,"body":"Test response","headers":{"content-length":"13","date":"Mon, dd.MM.yyyy HH:mm:ss GMT"}}
, где:
statusCode — код ответа сервиса;
body — тело ответа сервиса;
headers - заголовки ответа сервиса.
Пример использования функции в файле .tr:
define result = getRequest("testGet", false, in)
out = $result