Клиент REST-сервиса на основе OpenAPI
На платформе Entaxy вы можете создать клиентов двух типов: Клиент SOAP-сервиса на основе WSDL (с поддержкой службы аутентификации и авторизации Java (JAAS)) и Клиент REST-сервиса на основе OpenAPI (с поддержкой службы аутентификации и авторизации Java (JAAS) и OAuth авторизации*). Выбор между ними зависит от требований проекта и предпочтений в использовании соответствующих технологий.
*Текущая версия модуля OAuth разработана под сервер авторизации Keycloak, но может быть сконфигурирована под работу с другими серверами авторизации. |
Ниже представлено руководство по созданию и настройке REST-клиента.
Параметры REST-клиента
General

Название | Описание |
---|---|
Factory |
Идентификатор используемой фабрики с предустановленным значением (REST :: OPENAPI :: CLIENT). |
Object Id |
Уникальный идентификатор клиента. |
Display name |
Отображаемое имя клиента. |
Description |
Поле для краткого описания. |
Redelivery policy

Настройка обработки ошибок и повторной доставки сообщений. Подробнее ознакомиться можно здесь.
Routes

-
AGGREGATOR
Маршрут для агрегирования нескольких сообщений на основе заданных критериев. -
QUARTZ
Маршрут используется для планирования задач с помощью Quartz Scheduler. Он позволяет запускать маршруты на основе расписания, которое можно настроить с помощью Cron выражений или простых интервалов времени. -
ROUTE-CALLABLE
Маршрут для выполнения настраиваемых логик и операций, позволяющий вызывать различные функции и взаимодействовать с внешними системами. -
TIMER
Маршрут предназначен для создания периодических событий. Он позволяет запускать маршруты через заданные интервалы времени, такие как каждая секунда, минута или час, без необходимости использования внешних планировщиков или триггеров.
Main

Название | Описание |
---|---|
Schema Validation Enabled |
Активация проверки тела запроса на соответствие структуре и формату заданной схемы API. |
Data Format |
Формат данных для обработки: * POJO: Используется для работы с данными в виде Plain Old Java Objects, что позволяет напрямую работать с Java объектами. * ORIGIN: Используется для работы с данными в их исходном виде. |
Absolute Address |
Полный URL адрес публикации REST-сервиса в рамках шины по которому будут отправляться запросы. |
OpenApi schema |
Загрузка YAML/JSON файла. Для загрузки нажать "Select" и выбрать предварительно загруженный на платформу YAML/JSON файл. В открывшемся окне выбрать .yaml / .json файл и нажать кнопку "Select". |
Title |
Заголовок API. Заполняется автоматически на основе загруженного YAML/JSON файла. |
Operation Router |
Редактируемый параметр маршрутизации данных на основе загруженного YAML/JSON файла. |
Security

Название | Описание |
---|---|
Auth Password |
Пароль используемый для аутентификации. |
Auth Username |
Имя пользователя используемое для аутентификации. |
Producer

Название | Описание |
---|---|
Lazy Start Producer |
Определяет, следует ли откладывать инициализацию продюсера до момента получения первого сообщения. Ленивый запуск позволяет CamelContext и маршрутам запускаться даже в тех случаях, когда немедленная инициализация продюсера может привести к сбою и прервать запуск маршрута. При ленивой инициализации возможные ошибки можно обработать с помощью маршрутизируемых обработчиков ошибок Camel при первом обращении к продюсеру. Следует учитывать, что инициализация и запуск продюсера при первом сообщении могут занять больше времени, что увеличит общее время обработки. |
Cookie Handler |
Определяет использование обработчика cookies для управления и поддержания состояния HTTP-сессии. |
Hostname verifier |
Параметр, позволяющий использовать пользовательский javax.net.ssl.HostnameVerifier. |
Throw Exception On Failure |
Параметр, позволяющий отключить генерацию HttpOperationFailedException в случае неудачных ответов от удаленного сервера. Это позволяет получать все ответы независимо от кода состояния HTTP. |
Advanced

Название | Описание |
---|---|
Basic Property Binding |
Определяет, должен ли компонент использовать базовое связывание свойств (Camel 2.x) или новое связывание свойств с дополнительными возможностями. |
Continuation Timeout |
Используется для настройки таймаута Continuation CXF, который может использоваться в CxfConsumer по умолчанию, когда сервер CXF использует транспорт Jetty или Servlet. |
Default Bus |
Устанавливает шину по умолчанию, которая будет использоваться, если конечная точка CXF создает шину самостоятельно. |
Perform Invocation |
Если чек-бокс включен, Camel выполнит вызов экземпляра класса ресурса и поместит объект ответа в обмен (exchange) для дальнейшей обработки. |
Propagate Contexts |
Если чек-бокс включен, контексты JAXRS UriInfo, HttpHeaders, Request и SecurityContext будут доступны для пользовательских процессоров CXFRS в виде типизированных свойств обмена Camel. Эти контексты могут быть использованы для анализа текущих запросов с помощью JAX-RS API. |
Synchronous |
Устанавливает, следует ли строго использовать синхронную обработку, или Camel может использовать асинхронную обработку (если это поддерживается). |
Header filter

Название | Описание |
---|---|
Header Filter Strategy |
Для использования пользовательской стратегии фильтрации заголовков org.apache.camel.spi.HeaderFilterStrategy для фильтрации заголовков в сообщениях Camel. |
Common

Название | Описание |
---|---|
Logging Feature Enabled |
Чек-бокс включает функцию CXF Logging Feature, которая записывает входящие и исходящие REST-сообщения в журнал. |
Logging Size Limit |
Ограничение общего размера количества байт, которые будет выводить регистратор при включенной функции протоколирования. |
Providers |
Установка списка пользовательских провайдеров JAX-RS для конечной точки CxfRs. Вы можете указать строку со списком провайдеров для поиска в реестре через запятую. |
Skip Fault Logging |
Чек-бокс определяет, будет ли цепочка перехватчиков PhaseInterceptorChain пропускать логирование ошибки (Fault), которую она перехватывает. |
Ssl Context Parameters

Название | Описание |
---|---|
Ssl Context Parameters |
Этот параметр используется для настройки безопасности с помощью SSLContextParameters. Вы можете использовать визуальную конфигурацию с базовыми настройками или, если требуется более точная настройка, создать beans и выбрать опцию "custom". |
Producer (advanced)

Название | Описание |
---|---|
Http Client API |
Если значение установлено в "true", CxfRsProducer будет использовать HttpClientAPI для вызова сервиса. Если значение установлено в "false", CxfRsProducer будет использовать ProxyClientAPI для вызова сервиса. |
Ignore Delete Method Message Body |
Чек-бокс определяет, будет ли CxfRsProducer игнорировать тело сообщения метода DELETE при использовании HTTP API. |
Max Client Cache Size |
Параметр позволяет настроить максимальный размер кэша. Реализация кэширует CXF-клиентов или ClientFactoryBean в CxfProvider и CxfRsProvider. По умолчанию размер кэша равен 10. |
Oauth

Название | Описание |
---|---|
Enable OAuth |
Чек-бокс активирует параметры OAuth авторизации. |
Static token |
Чек-бокс активирует использование статических токенов (требуется заполнить параметр Token). |
Target header |
Указывает заголовок, который используется для направления запроса. По умолчанию - Authorization. |
Target header pattern |
Задает шаблон для формирования значения целевого заголовка. Значение по умолчанию "Bearer ${exchangeProperty.oauthToken}". |
Encode token to base64 |
Чек-бокс определяет, будет ли токен закодирован в формат base64 перед его отправкой. |
Grant type |
Определяет тип потока аутентификации, используемый для получения токена доступа. Варианты: Password: используется, когда клиент предоставляет имя пользователя и пароль для получения токена. Client Credentials: используется, когда клиент получает токен, аутентифицируясь с помощью учетных данных client_id и client_secret. |
URL token |
Параметр указывает URL, по которому осуществляется запрос для получения токена. |
URL refresh |
Параметр указывает URL для обновления токена. Если он не задан, используется URL токена. |
Client Id |
Уникальный идентификатор клиента, используемый для аутентификации в системе. |
Client secret |
Секретный ключ клиента, используемый для аутентификации и подтверждения его подлинности. |
Username |
Имя пользователя, используемое для аутентификации. |
Password |
Пароль пользователя, используемый для аутентификации. |
Pre-Token |
Конфигурация параметров получения токена до выполнения основной операции. |
Pre-Refresh |
Конфигурация параметров обновления токена до выполнения основной операции. |
Parse response |
Конфигурация параметров обработки ответа сервера после получения запроса. |
Refresh policy |
Политика обновления токена. Варианты: no refresh - обновление токена не выполняется. expired - токен обновляется за заданное время до истечения его срока действия (требуется заполнить параметр Request beforehand). timer - токен обновляется через фиксированные интервалы времени (требуется заполнить параметр Refresh timer). error - будут предприниматься попытки повторного получения токена, если сервис возвращает ошибку, код состояния которой указан в параметре Http error codes (можно указать несколько кодов состояния через запятую). |
Consumer (advanced)

Название | Описание |
---|---|
Exchange Pattern |
Шаблон обмена сообщений определяет тип взаимодействия между потребителем и поставщиком в контексте маршрутизации сообщений: InOnly — Потребитель отправляет запрос без ожидания ответа от поставщика. Этот шаблон подходит для сценариев, когда важно только доставить сообщение, а подтверждение его получения не требуется. InOut — Потребитель отправляет запрос и ожидает получить ответ от поставщика. Это стандартный шаблон обмена для операций, требующих подтверждения успешного выполнения или получения результата обработки запроса. InOptionalOut — Потребитель отправляет запрос и может ожидать ответ, но получение ответа является необязательным. Этот шаблон используется в случаях, когда ответ на запрос может быть полезен, но не критически важен для продолжения работы потребителя. |
Создать клиент
Для создания REST-клиента:
-
Перейдите в раздел Сервисы и Клиенты.
-
Откройте вкладку Services and Clients.
-
Нажмите на кнопку "Add Service".
-
В появившемся окне выберите REST-client и нажмите "Next".
-
Заполните необходимые параметры.
Пример заполнения параметров:
-
General:
-
Object Id: укажите уникальный идентификатор клиента.
-
-
Main:
-
Absolute address: укажите полный URL REST-сервиса (например, http://localhost:8181/cxf/rest-service), по которому будут отправляться запросы.
-
OpenApi schema: загрузите YAML- или JSON-файл, описывающий ресурс. На его основе будет создан клиент.
-
-
Security (при необходимости):
Настройте параметры аутентификации, если REST-сервис использует JAAS.Укажите:
-
Auth Username — имя пользователя для аутентификации.
-
Auth Password — пароль для аутентификации.
-
-
OAuth (при необходимости):
Текущая версия модуля OAuth разработана под сервер авторизации Keycloak, но может быть сконфигурирована под работу с другими серверами авторизации.
-
Активируйте чек-бокс "Enable OAuth".
-
Укажите параметры авторизации, если REST-сервис использует OAuth. Пример настройки и валидации OAuth Introspect с использованием REST API.
-
Выберите Grant Type:
-
Password
Заполнение обязательных параметров:
-
URL Token — укажите URL для получения токена.
-
Client Id — укажите идентификатор клиента.
-
Client Secret — укажите секретный ключ клиента.
-
Username — укажите имя пользователя.
-
Password — укажите пароль пользователя.
Следующие параметры конфигурации обязательны, но при отсутствии особых требований их можно оставить без изменений:
-
Pre get token: получение токена перед выполнением основной операции.
-
Pre refresh: обновление токена перед выполнением основной операции.
-
Parse Response: обработка ответа сервера после выполнения запроса.
-
-
Client Credentials
Заполнение обязательных параметров:
-
URL Token — укажите URL для получения токена.
-
Client Id — укажите идентификатор клиента.
-
Client Secret — укажите секретный ключ клиента.
Следующие параметры конфигурации обязательны, но при отсутствии особых требований их можно оставить без изменений:
-
Pre get token: получение токена перед выполнением основной операции.
-
Pre refresh: обновление токена перед выполнением основной операции.
-
Parse response: обработка ответа сервера после выполнения запроса.
-
-
-
-
После заполнения всех необходимых параметров нажмите кнопку "Add" для сохранения настроек и создания REST-клиента.
После успешного создания REST-клиента автоматически создается выходной коннектор клиента.


После подключения выходного коннектора клиента к профилю системы в параметрах pre-output коннектора отображается конфигурация маршрутов операций, доступных через REST-клиент.


Она включает:
-
Тег <m:set-operation> - определяющий вызываемую REST-клиентом операцию.
Пример:
<m:set-operation>deleteToById</m:set-operation>
-
Шаблон параметра пути.
Пример:
<setProperty name="NTX_CLIENT_pet_id"> <simple>undefined</simple> </setProperty>
Свойство NTX_CLIENT_pet_id используется для подстановки значения в переменную пути {pet_id} (path: /pets/{pet_id}; verb: DELETE; operationId: deleteToById). Тег <simple> — задает значение, которое присваивается указанному свойству. Значение по умолчанию undefined указывает, что параметр не задан.
Просмотреть список созданных клиентов
-
Перейдите в раздел
Сервисы и Клиенты
, затем откройте вкладкуServices and Clients
. -
На этой вкладке вы увидите таблицу с информацией о созданных клиентах и сервисах.
Таблица содержит следующие столбцы:
-
Name: уникальное имя созданного клиента.
-
Status: текущий статус клиента.
Например, "Active" или "Resolved". -
Actions: содержит кнопки для управления клиентом: Start (запуск клиента), Stop (остановка клиента), Edit (редактирование свойств клиента).
-
View Properties: просмотр свойств клиента.
-
Uninstall: удаление клиента.
Если вы хотите найти конкретный клиент по имени или статусу, используйте фильтр. Введите имя клиента или выберите нужный статус в соответствующем поле фильтра. Таблица автоматически обновится, чтобы показать только результаты соответствующие поиску.
-
Остановить клиент
-
На вкладке
Services and Clients
в строке соответствующего клиента найдите столбец "Actions", в котором находятся кнопки управления клиентом. -
Нажмите кнопку Stop.
-
Клиент будет остановлен. Появится подтверждающее сообщение о том, что операция выполнена успешно: "Operation Succeeded!".
-
В столбце "Status" клиента должно отображаться "Resolved", подтверждая успешную остановку.
Запустить клиент
-
На вкладке
Services and Clients
в строке соответствующего клиента найдите столбец "Actions", в котором находятся кнопки управления клиентом. -
Нажмите кнопку Start.
-
Клиент будет запущен. Появится подтверждающее сообщение о том, что операция выполнена успешно: "Operation Succeeded!".
-
В столбце "Status" клиента должно отображаться "Active", подтверждая успешный запуск.
Удалить клиент
-
На вкладке
Services
в строке соответствующего клиента найдите столбец "Actions", в котором находятся кнопки управления клиентом . -
Нажмите кнопку Uninstall.
-
Появится сообщение с просьбой подтвердить удаление клиента. Убедитесь, что вы действительно хотите удалить клиент, так как эту операцию нельзя отменить.
-
Подтвердите удаление, выбрав Confirm или отмените удаление, выбрав Cancel.
-
В случае подтверждения появится подтверждающее сообщение о том, что операция выполнена успешно: "Operation Succeeded!".
-
Клиент удален. Он больше не будет отображаться в списке клиентов.