Модули расширения системы > Пользовательские модули / Методы API в модулях

Методы API в модулях

Платформа предоставляет возможность автору модуля создать свои собственные методы для использования их в web API или в сценариях виджетов, страниц и процессов. Например, можно создать методы для запуска бизнес-процесса, сложной выборки данных или организовать методы для промежуточного взаимодействия с внутренней или внешней системой. Можно создавать функции общего назначения и использовать их повторно в разных местах.

Чтобы создать или отредактировать метод:

  1. Перейдите в Администрирование > Модули.
  2. Наведите курсор на модуль и нажмите на появившийся значок шестеренки.

extention-settings1

  1. Перейдите на вкладку Методы API.
  2. Нажмите Редактировать. Откроется редактор методов.
  3. Нажмите кнопку +Добавить. В открывшемся окне внесите нужную информацию.

exten_16

  • Название* — укажите название метода.
  • Адрес* — в выпадающем списке выберите один или несколько методов HTTP запроса. Доступны следующие методы: GET, POST, PUT, PATCH, DELETE. Укажите адрес, по которому будет доступен метод. В адресе с помощью знака «/» можно обозначить путь к вложенным методам. Например, /main/email_dispatch. Количество уровней вложенности неограниченно. Путь к методу может заканчиваться знаком «/», например call_events/route/.
  • Функция* — создайте функцию, которая будет выполняться при получении запроса.
  • Авторизация — выберите тип авторизации, который будет применяться при получении запроса.
    • Внутренняя авторизацияметод можно вызывать только внутри модуля, например, в других методах, виджетах, действиях в бизнес-процессах, обработчиках событий с помощью команды Namespace.api.название_метода. Подробнее об этом мы написали ниже. Пользователь, от имени которого исполняется сценарий, должен быть авторизован в ELMA365.
    • Внешняя авторизация — при выборе этой опции метод будет доступен из внешней системы по токену.
  • Асинхронный запуск — опция позволяет продолжить работу, не дожидаясь окончания выполнения метода.
  • Описание — укажите подробное описание метода.
  1. Перейдите на вкладку Сценарии и напишите метод. Для этого используется язык программирования TypeScript. Более подробно про принципы написания сценариев в ELMA365 вы можете прочитать в справке «ELMA365 TS SDK».
  2. Сохраните и опубликуйте метод.

Доступ к глобальным константам

При написании методов можно использовать константу Global. Она дает доступ к переменным, содержащимся в разделах, и к глобальным параметрам. Использование этого объекта препятствует дальнейшей выгрузке модуля. То есть, если использовать константу Global для написания метода API, то этот модуль с этим методом нельзя будет экспортировать.

Чтобы разрешить доступ к константе Global:

  1. В редакторе методов, перейдите на вкладку Сценарии.

exten-17

  1. В верхнем меню нажмите Настройки.
  2. В открывшемся окне выберите опцию Global.

Вызов метода API из кода сценария

После создания метода API в модуле вы можете вызвать его в любом скрипте этого же модуля. Для этого в глобальной переменной Namespace есть свойство api:

let response = await Namespace.api.some_method.call({
    method: "POST",
    headers: {
        "X-My-CutomHeader": "Some header data"
    },
    query: {
        "skip": "0",
        "take": "10"
    },
    body: "Any body here"
});

В этот метод передается тип FetchRequest, он же используется в методе fetch.

При вызове этого метода происходит веб-вызов метода API через стандартный протокол HTTP. Поэтому ответ от метода приходит в виде стандартного объекта FetchResponse.

Также для разработки модулей с вебхуками можно получить адрес метода API с помощью команды Namespace.api.some_method.getUrl(), которая вернет строку с полным адресом этого метода для дальнейшего вызова. Этот метод бывает полезен, когда во время работы сторонний сервис требует указать обратный адрес для вызова.