Блог Горошко Андрея 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, вебхук.

Похожая задача в бизнесе?

Помогу автоматизировать процессы и внедрить ИИ

Меня зовут Андрей Горошко. Я Full-stack разработчик и эксперт по 1С-Битрикс. Настраиваю CRM Битрикс24, разрабатываю защищенные API и создаю умных ИИ-агентов для автоматизации рутины.

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

Related Post

Добавление и обновление элементов в Битрикс: CIBlockElement::Add и UpdateДобавление и обновление элементов в Битрикс: CIBlockElement::Add и Update

Создание и редактирование контента — базовые операции для любого сайта. В 1С-Битрикс за это отвечают методы CIBlockElement::Add и CIBlockElement::Update. Они являются частью старого API, но до сих пор широко используются и абсолютно надежны.

Верстка блока «До/После» (Before/After Slider) для сайтов услугВерстка блока «До/После» (Before/After Slider) для сайтов услуг

Качественная frontend-разработка и профессиональная натяжка макетов на 1С-Битрикс являются фундаментальным фактором конверсии сайта и его позиций в поисковых системах. Услуга «Верстка блока «До/После» (Before/After Slider) для сайтов услуг» гарантирует наглядная

Добавить единицу измерения catalog.measure.addДобавить единицу измерения catalog.measure.add

Эффективная интеграция и кастомизация функционала в Битрикс24 часто требует работы на уровне API. Сегодня мы подробно рассмотрим «Добавить единицу измерения catalog.measure.add». Вы узнаете экспертные методики работы с catalog.measure.add и научитесь