Перейти к основному содержимому

Вызовы сервисов

Для вызова сервиса Атомкод необходима следующая информация:

  • имя сервиса и команды;
  • структура ответа для десериализации;
  • токен доступа для авторизации запроса.

Получение метаданных команды

Чтобы получить получить форматы запроса и ответа целевого сервиса:

  1. Вручную вызовите метод api/system целевого сервиса.

    Ответ содержит список доступных команд с метаданными.

  2. Выберите интересующую команду и извлеките значения полей detectionCommand и urn.

  3. В Swagger по значению urn найдите метод целевого сервиса.

Авторизация запроса

Для авторизации запроса необходимо создать токен TokenRequest.

Доступны следующие варианты создания токена:

  • Запрос от имени пользователя (DelegationTokenRequest).

    Следующий блок кода демонстрирует создание токена с делегированием прав пользователя.

    ru.platform.microserviceInteraction.tokenProvider.TokenExtractor tokenExtractor;
    ru.platform.apiClient.IdentityHelper identityHelper;

    TokenRequest tokenRequest = identityHelper.generateDelegationTokenRequest(tokenExtractor.extractToken());
  • Запрос от имени сервиса (ClientCredentialsTokenRequest).

    Следующий блок кода демонстрирует создание токена от имени сервиса.

    ru.platform.apiClient.IdentityHelper identityHelper;

    TokenRequest tokenRequest = identityHelper.generateClientCredentialsTokenRequest();

Вызов целевого сервиса

После создания токена TokenRequest можно вызывать API целевого сервиса через ApiClient.

Следующий блок кода демонстрирует вызов команды сервиса.

ru.platform.apiclient.ApiClient apiClient;

String responseJson = apiClient.invokeCommandRaw(serviceName, command, params, tokenRequest, String.class);

Компонент ApiClient автоматически регистрируется в Spring-контексте при включении Spring Boot Starter.

Обработка ответа

Ответы сервисов оборачиваются в служебный объект ADSResponse, который содержит поля со следующей информацией:

  • тело ответа;
  • информация об ошибке.

Для Java-сервисов класс-обертка находится в библиотеке mdjavaapiclient.

Следующий блок кода демонстрирует основные методы ADSResponse.

ru.platform.mdCommandModel.ADSResponse

// Создание успешного ответа
public static <T> ADSResponse<T> buildResponse(T result)

// Создание ответа с ошибкой
public static <T> ADSResponse<T> buildError(String message, Throwable e)