.. _sap_rest_integr: Класс универсальных методов для интеграции с ИМ по REST ======================================================= Существует глобальный класс ``/TRL/XDE_CL_REST`` (тр. SE24), который содержит в себе универсальные и вспомогательные методы для взаимодействия с ИМ через REST API. Все методы этого класса являются статичными, т.е. для их выполнения не требуется создавать объект класса. Главным методом для работы с REST сервисом для работы с ИМ является метод ``DO_OPERATION``, который является ``Public`` методом, все остальные методы закрыты и находятся в секции ``Private``. .. list-table:: **Список методов класса /TRL/XDE_CL_REST** :widths: auto :header-rows: 1 * - Имя метода - Вид - Видимость - Описание * - DO_OPERATION - Static Method - Public - Выполнить операцию * - GET_TOKEN - Static Method - Public - Получить токен из БД или REST API * - CLEAR_TOKEN - Static Method - Public - Очистить токен * - GET_FILE - Static Method - Public - Получить файл * - SEND_FILE - Static Method - Public - Отправить файл * - SIGN - Static Method - Public - Подписание данных с помощью CryptoApi сервиса * - GET_CERT - Static Method - Public - Получить данные сертификата * - SAVE_DATABASE - Static Method - Private - Сохранить токен в БД * - DO_REQUEST - Static Method - Private - Выполнить http-запрос * - GET_URI - Static Method - Private - Собрать адрес URI для запроса * - GET_HEADER - Static Method - Private - Собрать заголовок запроса * - GET_REST_SV - Static Method - Private - Получить данные из таблицы ``/TRL/XDE_REST_SV/ST`` * ``SAVE_DATABASE`` Метод сохраняет в таблицу ``/TRL/XDE_REST_SV`` значение токена для определенного типа сервиса. * ``GET_REST_SV`` Метод берет данные из таблиц ``/TRL/XDE_REST_SV`` и ``/TRL/XDE_REST_ST`` по конкретной операции и конкретному REST сервису. * ``GET_HEADER`` Метод собирает заголовок http-запроса, в который попадает значение токена и content-type = application/json. * ``DO_REQUEST`` Метод выполняет http-запрос. В зависимости от настроек ``/TRL/XDE_REST_ST-HTTP_TYPE`` вызывается стандартный модуль ``HTTP_GET`` или ``HTTP_POST``. Если запрос выполнен неуспешно – вызывается особая ситуация HTTP_ERROR. Если запрос выполнен неуспешно (код ответа 401) – вызывается особая ситуация AUTH_ERROR, сообщающая о том, что значение токена не актуально. Если запрос выполнен успешно (код ответа 200) – работа метода завершается. * ``GET_URI`` Метод собирает URI для выполнения http-запроса. Для этого сначала выполняется метод GET_CUST, затем выбираются данные из таблицы ``/TRL/XDE_REST_ST`` по коду операции. При необходимости тег из ``/TRL/XDE_REST_ST-METH_NAME`` заменяется на конкретное значение. * ``DO_OPERATION`` Универсальный метод для выполнения всех операций по взаимодействию с ИМ по REST API. Делится на семь этапов: - Получение данных по количеству итераций и времени ожидания между ними с помощью метода ``GET_ITERATION_DATA``. - Получение токена с помощью метода ``GET_TOKEN``. - Получение адреса запроса (URI) с помощью метода ``GET_URI``. - Получение тела запроса с помощью вызова ФМ из ``/TRL/XDE_REST_ST-CREATE_BODY``. - Получение заголовка запроса с помощью метода ``GET_HEADER``. - Выполнение http-запроса с помощью метода ``DO_REQUEST`` (если возникла ошибка аутентификации – этапы 1-5 выполняются повторно). - Выполнение обработки тела ответа http-запроса с помощью вызова ФМ из ``/TRL/XDE_REST_ST-INPUT_FM``. * ``GET_TOKEN`` Метод проверяет, считан ли из таблицы ``/TRL/XDE_REST_SV`` токен. Если токен уже заполнен - работа метода заканчивается. Если токен не заполнен - выполняется http-запрос для прохождения авторизации и получения нового токена. * ``CLEAR_TOKEN`` Метод чистит поле ``TOKEN`` атрибута ``MS_REST_SV``, если параметр ``IV_SAVE`` установлен как "X", то вызывается метод ``SAVE_DATABASE``, который очистит значение токена в таблице ``/TRL/XDE_REST_SV``. * ``GET_FILE`` Метод отправляет файл в архив IM, адрес которого настраивается в ``/TRL/XDE_REST_SV``. * ``SEND_FILE`` Метод получает файл из архива IM, адрес которого настраивается в ``/TRL/XDE_REST_SV``. * ``GET_CERT`` Метод возвращает электронную подпись по отпечатку сертификата, получаемую через сервис CryptoApi. * ``SIGN`` Метод возвращает файл электронной подписи по отпечатку сертификата, получаемый через сервис CryptoApi для одного или нескольких файлов.