Стандартный 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-контроллере.
- Создайте .settings.php в корне модуля для объявления пространства имен контроллеров.codePHP
// /local/modules/mymodule/.settings.php return [ 'controllers' => [ 'value' => [ 'namespaces' => [ // Указываем, что контроллеры для REST лежат в под-пространстве \Rest '\\MyModule\\Controller\\Rest' => 'api', ], ], 'readonly' => true, ] ];
- Создайте сам контроллер.
// /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
Проверка через вебхук:
- Создайте входящий вебхук в Битрикс24 (Интеграции -> Вебхуки). Дайте ему права на «Пользователи» (user).
- Сформируйте 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, вебхук.