Клиент REST-сервиса на основе OpenAPI

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

*Текущая версия модуля OAuth разработана под сервер авторизации Keycloak, но может быть сконфигурирована под работу с другими серверами авторизации.

Ниже представлено руководство по созданию и настройке REST-клиента.

Параметры REST-клиента

General

rest general
Название Описание

Factory

Идентификатор используемой фабрики с предустановленным значением (REST :: OPENAPI :: CLIENT).

Object Id

Уникальный идентификатор клиента.

Display name

Отображаемое имя клиента.

Description

Поле для краткого описания.

Redelivery policy

rest redelivery

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

Routes

rest routes
  • AGGREGATOR
    Маршрут для агрегирования нескольких сообщений на основе заданных критериев.

  • QUARTZ
    Маршрут используется для планирования задач с помощью Quartz Scheduler. Он позволяет запускать маршруты на основе расписания, которое можно настроить с помощью Cron выражений или простых интервалов времени.

  • ROUTE-CALLABLE
    Маршрут для выполнения настраиваемых логик и операций, позволяющий вызывать различные функции и взаимодействовать с внешними системами.

  • TIMER
    Маршрут предназначен для создания периодических событий. Он позволяет запускать маршруты через заданные интервалы времени, такие как каждая секунда, минута или час, без необходимости использования внешних планировщиков или триггеров.

Main

rest 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

rest security
Название Описание

Auth Password

Пароль используемый для аутентификации.

Auth Username

Имя пользователя используемое для аутентификации.

Producer

rest producer
Название Описание

Lazy Start Producer

Определяет, следует ли откладывать инициализацию продюсера до момента получения первого сообщения. Ленивый запуск позволяет CamelContext и маршрутам запускаться даже в тех случаях, когда немедленная инициализация продюсера может привести к сбою и прервать запуск маршрута. При ленивой инициализации возможные ошибки можно обработать с помощью маршрутизируемых обработчиков ошибок Camel при первом обращении к продюсеру. Следует учитывать, что инициализация и запуск продюсера при первом сообщении могут занять больше времени, что увеличит общее время обработки.

Cookie Handler

Определяет использование обработчика cookies для управления и поддержания состояния HTTP-сессии.

Hostname verifier

Параметр, позволяющий использовать пользовательский javax.net.ssl.HostnameVerifier.

Throw Exception On Failure

Параметр, позволяющий отключить генерацию HttpOperationFailedException в случае неудачных ответов от удаленного сервера. Это позволяет получать все ответы независимо от кода состояния HTTP.

Advanced

rest 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

rest header filter
Название Описание

Header Filter Strategy

Для использования пользовательской стратегии фильтрации заголовков org.apache.camel.spi.HeaderFilterStrategy для фильтрации заголовков в сообщениях Camel.

Common

rest common
Название Описание

Logging Feature Enabled

Чек-бокс включает функцию CXF Logging Feature, которая записывает входящие и исходящие REST-сообщения в журнал.

Logging Size Limit

Ограничение общего размера количества байт, которые будет выводить регистратор при включенной функции протоколирования.

Providers

Установка списка пользовательских провайдеров JAX-RS для конечной точки CxfRs. Вы можете указать строку со списком провайдеров для поиска в реестре через запятую.

Skip Fault Logging

Чек-бокс определяет, будет ли цепочка перехватчиков PhaseInterceptorChain пропускать логирование ошибки (Fault), которую она перехватывает.

Ssl Context Parameters

rest sslcontext
Название Описание

Ssl Context Parameters

Этот параметр используется для настройки безопасности с помощью SSLContextParameters. Вы можете использовать визуальную конфигурацию с базовыми настройками или, если требуется более точная настройка, создать beans и выбрать опцию "custom".

Producer (advanced)

rest 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

rest 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)

rest consumer advanced
Название Описание

Exchange Pattern

Шаблон обмена сообщений определяет тип взаимодействия между потребителем и поставщиком в контексте маршрутизации сообщений:

InOnly — Потребитель отправляет запрос без ожидания ответа от поставщика. Этот шаблон подходит для сценариев, когда важно только доставить сообщение, а подтверждение его получения не требуется.

InOut — Потребитель отправляет запрос и ожидает получить ответ от поставщика. Это стандартный шаблон обмена для операций, требующих подтверждения успешного выполнения или получения результата обработки запроса.

InOptionalOut — Потребитель отправляет запрос и может ожидать ответ, но получение ответа является необязательным. Этот шаблон используется в случаях, когда ответ на запрос может быть полезен, но не критически важен для продолжения работы потребителя.

Создать клиент

Для создания REST-клиента:

  1. Перейдите в раздел Сервисы и Клиенты.

  2. Откройте вкладку Services and Clients.

  3. Нажмите на кнопку "Add Service".

    services and clients
  4. В появившемся окне выберите REST-client и нажмите "Next".

    choose factory rest
  5. Заполните необходимые параметры.

    Пример заполнения параметров:

    • General:

      general example
      • Object Id: укажите уникальный идентификатор клиента.

    • Main:

      main example
      • Absolute address: укажите полный URL REST-сервиса (например, http://localhost:8181/cxf/rest-service), по которому будут отправляться запросы.

      • OpenApi schema: загрузите YAML- или JSON-файл, описывающий ресурс. На его основе будет создан клиент.

    • Security (при необходимости):
      Настройте параметры аутентификации, если REST-сервис использует JAAS.

      security example

      Укажите:

      • Auth Username — имя пользователя для аутентификации.

      • Auth Password — пароль для аутентификации.

    • OAuth (при необходимости):

    Текущая версия модуля OAuth разработана под сервер авторизации Keycloak, но может быть сконфигурирована под работу с другими серверами авторизации.

    • Активируйте чек-бокс "Enable OAuth".

    • Укажите параметры авторизации, если REST-сервис использует OAuth. Пример настройки и валидации OAuth Introspect с использованием REST API.

    • Выберите Grant Type:

      • Password

        general oauth password

        Заполнение обязательных параметров:

        • URL Token — укажите URL для получения токена.

        • Client Id — укажите идентификатор клиента.

        • Client Secret — укажите секретный ключ клиента.

        • Username — укажите имя пользователя.

        • Password — укажите пароль пользователя.

          Следующие параметры конфигурации обязательны, но при отсутствии особых требований их можно оставить без изменений:

        • Pre get token: получение токена перед выполнением основной операции.

        • Pre refresh: обновление токена перед выполнением основной операции.

        • Parse Response: обработка ответа сервера после выполнения запроса.

      • Client Credentials

        general oauth cc

        Заполнение обязательных параметров:

        • URL Token — укажите URL для получения токена.

        • Client Id — укажите идентификатор клиента.

        • Client Secret — укажите секретный ключ клиента.

          Следующие параметры конфигурации обязательны, но при отсутствии особых требований их можно оставить без изменений:

        • Pre get token: получение токена перед выполнением основной операции.

        • Pre refresh: обновление токена перед выполнением основной операции.

        • Parse response: обработка ответа сервера после выполнения запроса.

  6. После заполнения всех необходимых параметров нажмите кнопку "Add" для сохранения настроек и создания REST-клиента.

    rest client create

После успешного создания REST-клиента автоматически создается выходной коннектор клиента.

add connector rest client
connector rest client

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

diagram rest client
pre output example

Она включает:

  1. Тег <m:set-operation> - определяющий вызываемую REST-клиентом операцию.

    Пример:

    <m:set-operation>deleteToById</m:set-operation>
  2. Шаблон параметра пути.

    Пример:

    <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: удаление клиента.

      client rest actions

      Если вы хотите найти конкретный клиент по имени или статусу, используйте фильтр. Введите имя клиента или выберите нужный статус в соответствующем поле фильтра. Таблица автоматически обновится, чтобы показать только результаты соответствующие поиску.

Остановить клиент

  1. На вкладке Services and Clients в строке соответствующего клиента найдите столбец "Actions", в котором находятся кнопки управления клиентом.

  2. Нажмите кнопку Stop.

  3. Клиент будет остановлен. Появится подтверждающее сообщение о том, что операция выполнена успешно: "Operation Succeeded!".

  4. В столбце "Status" клиента должно отображаться "Resolved", подтверждая успешную остановку.

    stop rest client

Запустить клиент

  1. На вкладке Services and Clients в строке соответствующего клиента найдите столбец "Actions", в котором находятся кнопки управления клиентом.

  2. Нажмите кнопку Start.

  3. Клиент будет запущен. Появится подтверждающее сообщение о том, что операция выполнена успешно: "Operation Succeeded!".

  4. В столбце "Status" клиента должно отображаться "Active", подтверждая успешный запуск.

    start rest client

Удалить клиент

  1. На вкладке Services в строке соответствующего клиента найдите столбец "Actions", в котором находятся кнопки управления клиентом .

  2. Нажмите кнопку Uninstall.

  3. Появится сообщение с просьбой подтвердить удаление клиента. Убедитесь, что вы действительно хотите удалить клиент, так как эту операцию нельзя отменить.

  4. Подтвердите удаление, выбрав Confirm или отмените удаление, выбрав Cancel.

  5. В случае подтверждения появится подтверждающее сообщение о том, что операция выполнена успешно: "Operation Succeeded!".

  6. Клиент удален. Он больше не будет отображаться в списке клиентов.

    uninstall rest client