Блог Горошко Андрея 1C-Битрикс Как создать свой метод REST API в Битрикс на D7 контроллерах

Как создать свой метод REST API в Битрикс на D7 контроллерах

Средний рейтинг
Еще нет оценок

 Стандартный REST API Битрикс24 можно и нужно расширять своими методами.

Это позволяет выносить кастомную бизнес-логику в API и взаимодействовать с ней из внешних систем, мобильных приложений или JS-фронтенда.

Самый современный способ — создание REST-методов на основе D7-контроллеров.

Шаг 1: Регистрация модуля в REST-сервисе

Чтобы REST-сервер «узнал» о вашем модуле, его нужно зарегистрировать. Это делается в файле install/index.php вашего модуля.

// /local/modules/mymodule/install/index.php

class mymodule extends CModule
{
    // ...
    
    public function DoInstall()
    {
        // ...
        RegisterModule("mymodule");
        
        // Регистрируем модуль в REST
        if (\Bitrix\Main\Loader::includeModule('rest')) {
            \Bitrix\Rest\APIManager::registerModule('mymodule');
        }
    }
    
    public function DoUninstall()
    {
        // ...
        
        // Дерегистрируем модуль из REST
        if (\Bitrix\Main\Loader::includeModule('rest')) {
            \Bitrix\Rest\APIManager::unRegisterModule('mymodule');
        }
        
        UnRegisterModule("mymodule");
    }
}

После этого переустановите ваш модуль.

Шаг 2: Создание D7-контроллера для REST

REST-методы — это обычные action-методы в D7-контроллере.

  1. Создайте .settings.php в корне модуля для объявления пространства имен контроллеров.codePHP// /local/modules/mymodule/.settings.php return [ 'controllers' => [ 'value' => [ 'namespaces' => [ // Указываем, что контроллеры для REST лежат в под-пространстве \Rest '\\MyModule\\Controller\\Rest' => 'api', ], ], 'readonly' => true, ] ];
  2. Создайте сам контроллер.
// /local/modules/mymodule/lib/Controller/Rest/Example.php
namespace MyModule\Controller\Rest;

use Bitrix\Main\Engine\Controller;
use Bitrix\Main\Engine\ActionFilter;

class Example extends Controller
{
    /**
     * Обязательно настраиваем фильтры
     * REST-методы должны быть доступны только через AJAX
     */
    public function configureActions()
    {
        return [
            'getInfo' => [
                'prefilters' => [
                    // Фильтр для проверки прав доступа REST
                    new ActionFilter\Authentication(),
                    new ActionFilter\Scope([
                        ActionFilter\Scope::REST,
                    ]),
                ]
            ],
            'setData' => [
                'prefilters' => [
                    new ActionFilter\Authentication(),
                    new ActionFilter\Scope([
                        ActionFilter\Scope::REST,
                    ]),
                ]
            ]
        ];
    }
    
    /**
     * Простое действие для получения данных (GET)
     * @return array
     */
    public function getInfoAction()
    {
        return [
            'status' => 'ok',
            'version' => '1.0',
            'time' => time()
        ];
    }
    
    /**
     * Действие для получения и обработки данных (POST)
     * @param string $name
     * @param int $value
     * @return array
     */
    public function setDataAction($name = '', $value = 0)
    {
        // ... здесь какая-то логика с полученными данными ...
        
        if (empty($name)) {
            $this->addError(new \Bitrix\Main\Error("Parameter 'name' is required."));
            return null;
        }

        return [
            'status' => 'success',
            'received' => [
                'name' => $name,
                'value' => (int)$value
            ]
        ];
    }
}

Шаг 3: Вызов нового метода

Теперь наши методы доступны через REST API. Имена методов формируются по схеме: [модуль].[префикс_из_settings].[контроллер].[действие]

  • getInfoAction -> mymodule.api.example.getInfo
  • setDataAction -> mymodule.api.example.setData

Проверка через вебхук:

  1. Создайте входящий вебхук в Битрикс24 (Интеграции -> Вебхуки). Дайте ему права на «Пользователи» (user).
  2. Сформируйте URL для вызова:Для getInfo (GET-запрос):
    https://yourportal.bitrix24.ru/rest/1/xxxxxxxxxx/mymodule.api.example.getInfo.jsonДля setData (POST-запрос):
    https://yourportal.bitrix24.ru/rest/1/xxxxxxxxxx/mymodule.api.example.setData.json
    Тело POST-запроса: name=test&value=123

Вы можете выполнить эти запросы через любой REST-клиент (Postman, Insomnia) или просто вставив GET-ссылку в браузер.

Параметры и CRestServer

Внутрь action-метода можно инжектировать объект \CRestServer, который содержит всю информацию о текущем REST-запросе, включая скоупы и данные авторизации приложения.

public function someAction(\CRestServer $server)
{
    $authData = $server->getAuthData();
    // ...
}

Вывод:
Создание собственных REST-методов на D7-контроллерах — это современный, безопасный и стандартизированный способ расширения API вашего портала или сайта.

Это открывает безграничные возможности для интеграций и создания сложных frontend-приложений, работающих с вашим бэкендом на Битрикс.

REST API Битрикс, свой метод REST, D7 контроллер, registerModule, ActionFilter, CRestServer, вебхук.

Мой рейтинг:

Добавить комментарий

Related Post

Файл .parameters.php: Полное руководство по настройкам компонента БитриксФайл .parameters.php: Полное руководство по настройкам компонента Битрикс

Средний рейтинг Еще нет оценок Файл .parameters.php — это «пульт управления» вашего компонента. Он описывает, какие настройки будут доступны в визуальном редакторе при размещении компонента на странице. Правильно составленный .parameters.php делает компонент гибким и

result_modifier.php: Модификация данных компонента перед выводом в шаблонresult_modifier.php: Модификация данных компонента перед выводом в шаблон

Средний рейтинг Еще нет оценок Файл result_modifier.php — это специальный файл в шаблоне компонента, который выполняется после component.php, но до template.php. Его главная и единственная задача — модифицировать массив $arResult, подготавливая его к максимально простому выводу в

Создание Highload-блоков в Битрикс с помощью phpСоздание Highload-блоков в Битрикс с помощью php

Средний рейтинг Еще нет оценок Highload-блоки (HL-блоки) в Битрикс — мощный инструмент для работы с большими объемами структурированных данных. В этой статье разберем, как программно создавать HL-блоки с кастомными полями,