Как настроить REST API на 1С-Битрикс: Управление сайтом?

Как настроить REST API на 1С-Битрикс: Управление сайтом?

Нужно отдать каталог сайта мобильному приложению или внешнему сервису, а в админке нет кнопки "Создать вебхук"? На 1С-Битрикс: Управление сайтом REST включается вручную: модуль rest, страница /local/rest/, два правила в urlrewrite и галочка у инфоблока. После настройки вы получите рабочий URL вида /rest/1/ключ/iblock.Element.get и JSON с элементами - без путаницы с облачным CRM, который часто встречается в поиске по запросу "битрикс rest api".

REST на коробочной CMS - это способ дать внешней программе читать данные сайта по HTTPS без входа в админку. На БУС нет встроенного раздела для вебхуков: вы сами создаете страницу с компонентом bitrix:rest.hook, прописываете urlrewrite и включаете доступ у инфоблока. Тестовый вызов iblock.Element.get с iblockId и elementId должен вернуть JSON, а не METHOD_NOT_FOUND.

На практике типичная ошибка — открыть apidocs.bitrix24.ru и потратить час на методы crm.*, которые на вашем сайте не работают: главная проблема запроса «битрикс rest api» — путаница с облачным CRM. В реальном проекте с Flutter-каталогом разработчик видит ERROR_METHOD_NOT_FOUND, пока не добавит два правила urlrewrite и не включит «Включен доступ через REST» у инфоблока.

REST API (программный интерфейс по HTTP) на сайте нужен, когда данные должны уходить во внешний мир: мобильное приложение, виджет на другом домене, скрипт обмена. На коробочном "Управление сайтом" это не тот же продукт, что портальный REST облачного CRM: методы crm.* там не заработают на вашем каталоге.

Ниже - один связный сценарий от проверки модуля до тестового запроса к инфоблоку. Если инфоблока еще нет, сначала создайте его по инструкции по инфоблокам; для обмена с 1С смотрите обзор интеграции с 1С - REST там один из вариантов, не единственный.

Определите, когда нужен REST на CMS

Сравнение REST на CMS и облачном CRM Bitrix24

Берите модульный REST, если внешней системе нужен стабильный URL и JSON без разработки своего контроллера с нуля. Типичные задачи: каталог для Flutter-приложения, выгрузка новостей на лендинг, точечная синхронизация остатков.

Делайте: уточняйте в ТЗ продукт - "1С-Битрикс: Управление сайтом" на вашем домене, а не облачный портал. Не делайте: не копируйте примеры с apidocs.bitrix24.ru - они про CRM и не откроют ваш инфоблок.

Проверьте модуль rest и подготовьте окружение

Чеклист подготовки REST: модуль, SSL, пользователь, кеш

Модуль REST API для "Управление сайтом" доступен с версии продукта 16.6.0. Проверьте: Настройки - Настройки продукта - Модули - найдите "rest" и убедитесь, что он установлен.

  1. Убедитесь, что сайт открывается по HTTPS - без SSL вебхуки и apauth работать не будут.
  2. Создайте отдельного пользователя с минимальными правами (только то, что нужно API), не администратора.
  3. Проверьте версию модуля iblock: REST для инфоблоков появился с iblock 20.5.0; штатные методы read-only.
  4. Очистите кеш после правок urlrewrite - иначе правила не подхватятся.
  5. Для отладки включите вывод ошибок в settings.php на тестовом стенде, не на боевом.

Делайте: ведите чек-лист "модуль - SSL - пользователь - кеш". Не делайте: не выдавайте вебхук от учетной записи с полным доступом к админке.

Создайте страницу вебхуков в /local/rest/

Схема настройки страницы вебхуков /local/rest/ и urlrewrite

На БУС нет раздела "Разработчикам" как в облаке. Интерфейс входящего вебхука собирают вручную - страницей с компонентом bitrix:rest.hook.

Создайте файл /local/rest/index.php:

<?php
require($_SERVER["DOCUMENT_ROOT"]."/bitrix/header.php");
$APPLICATION->SetTitle("REST API");
$APPLICATION->IncludeComponent(
    "bitrix:rest.hook",
    "",
    [
        "SEF_MODE" => "Y",
        "SEF_FOLDER" => "/local/rest/",
        "SEF_URL_TEMPLATES" => [
            "list" => "",
            "event" => "event/",
        ],
    ]
);
require($_SERVER["DOCUMENT_ROOT"]."/bitrix/footer.php");

После сохранения откройте https://ваш-сайт.ru/local/rest/ под пользователем с правом на REST. Там создаете входящий вебхук и выбираете scope (права), например iblock.

Делайте: храните страницу в /local/, чтобы обновления ядра ее не затерли. Не делайте: не публикуйте ссылку на /local/rest/ в открытом доступе без авторизации в админке.

Настройте urlrewrite: два обязательных правила

Без двух правил вызовы /rest/... часто дают 404 или METHOD_NOT_FOUND. Схема прохождения запроса:

Цепочка вызова:
Клиент (curl, Postman, приложение) → HTTPS /rest/{user}/{code}/{method} → urlrewrite #^/rest/# → /bitrix/services/rest/index.php → модуль rest → метод iblock.Element.get → JSON-ответ

Добавьте в /urlrewrite.php (или через интерфейс "Управление адресами") два правила:

// Правило 1: страница управления вебхуками
[
    "CONDITION" => "#^/local/rest/#",
    "RULE" => "",
    "ID" => "bitrix:rest.hook",
    "PATH" => "/local/rest/index.php",
],
// Правило 2: обработчик API-вызовов
[
    "CONDITION" => "#^/rest/#",
    "RULE" => "",
    "ID" => "",
    "PATH" => "/bitrix/services/rest/index.php",
],

Делайте: проверяйте оба URL - и /local/rest/, и тестовый /rest/1/xxx/profile. Не делайте: не ограничивайтесь одним правилом "на все REST" - UI и API разведены.

Выпустите входящий вебхук и проверьте формат URL

На странице /local/rest/ создайте входящий вебхук. Формат вызова:

https://ваш-сайт.ru/rest/{ID_пользователя}/{секретный_код}/{имя_метода}

Пример теста (замените домен, user, code):

curl "https://ваш-сайт.ru/rest/1/xxxxxxxxxx/profile"

Успешный ответ - JSON с данными профиля. Для инфоблока понадобится scope iblock и методы iblock.Element.get или iblock.Element.list.

Делайте: храните код вебхука в секретах, не в git. Не делайте: не светите полный URL с ключом в логах nginx и в тикетах поддержки.

Откройте инфоблок для REST и сделайте тестовый запрос

Штатный REST инфоблоков с версии iblock 20.5.0 - только чтение: iblock.Element.get и iblock.Element.list. Запись через iblock.Element.add из коробки недоступна; для нее нужен обработчик OnRestServiceBuildDescription - см. статью про обработчики событий.

В настройках нужного инфоблока (Контент - Инфоблоки - тип - инфоблок):

  • Заполните поле "Символьный код API" (API_CODE) латиницей, например catalog.
  • Включите галочку "Включен доступ через REST".
  • Запомните числовой ID инфоблока и ID тестового элемента.

Пример GET к одному элементу:

curl "https://ваш-сайт.ru/rest/1/xxxxxxxxxx/iblock.Element.get?iblockId=5&elementId=42"

Для списка используйте iblock.Element.list с filter и select. Если в ответе не хватает полей вроде DETAIL_TEXT, расширяйте контроллер по документации на dev.1c-bitrix.ru - базовый get отдает не все свойства.

Делайте: сначала добейтесь рабочего get на одном элементе. Не делайте: не ожидайте запись в каталог через REST без доработки - это частая ловушка после опыта с облачными списками.

Выберите: модульный REST или собственные маршруты D7

Критерий Модуль rest + вебхук D7 RoutingConfigurator + /api/v1
Скорость старта Быстро: штатные iblock.* методы Дольше: пишете контроллер и авторизацию
Формат URL /rest/{user}/{code}/method.name Свой, например /api/v1/catalog
Запись в инфоблок Только через OnRestServiceBuildDescription Полный контроль в Engine\Controller
Кому подходит Интегратору, мобилке, чтению каталога Нестандартный контракт, своя авторизация
Итоговый вердикт: для чтения каталога и быстрого MVP берите модульный REST. Если ТЗ требует свой JSON и JWT вместо вебхука - проектируйте /api/v1 на D7, не ломая стандартный /rest/.

Проверьте безопасность и отладьте типичные ошибки

Частые симптомы и что проверить:

  • METHOD_NOT_FOUND - опечатка в имени метода, нет правила #^/rest/#, вебхук без scope iblock.
  • 404 на /rest/ - не добавлено правило urlrewrite или не сброшен кеш.
  • Пустой ответ или access denied - не включен REST у инфоблока, пустой API_CODE, вебхук создан другим пользователем.
  • Ошибка SSL - сайт открыт по http, а клиент требует https.

Ротация ключа: на /local/rest/ удалите старый вебхук, создайте новый, обновите URL у всех клиентов. Права пользователя для API настраивайте по принципу минимума - см. также работу с пользователями в cuser-getlist.

Нужна помощь с настройкой REST под мобильное приложение или обмен - обсудим задачу. Примеры интеграций смотрите в портфолио.

Автор: Максим Мольков, Senior-разработчик 1С-Битрикс.
Источники: документация REST 1С-Битрикс, REST API для инфоблоков, практика внедрений на CMS "Управление сайтом".

Частые вопросы

Чем REST API 1С-Битрикс на сайте отличается от портального REST?

На коробочном "Управление сайтом" вы сами поднимаете страницу /local/rest/ и правила urlrewrite; методы завязаны на ваши инфоблоки и модули сайта. Портальный REST облачного CRM - другой продукт с crm.* и своим интерфейсом вебхуков; его инструкции на каталог интернет-магазина на БУС не переносятся.

Как включить REST API на сайте 1С-Битрикс?

Установите модуль rest, создайте /local/rest/index.php с bitrix:rest.hook, добавьте два правила в urlrewrite для /local/rest/ и /rest/, выпустите входящий вебхук на новой странице. Без HTTPS и сброса кеша шаги часто "не срабатывают" на первом проходе.

Как получить элементы инфоблока через REST?

В инфоблоке укажите символьный код API и включите "Включен доступ через REST". Вызовите iblock.Element.get с iblockId и elementId или iblock.Element.list с filter - URL вида /rest/{user}/{code}/iblock.Element.get. В вебхуке должно быть право iblock.

Где взять вебхук, если нет раздела "Разработчикам"?

Создайте его сами: страница /local/rest/ с компонентом bitrix:rest.hook - это штатный способ на БУС. После авторизации в админке откройте /local/rest/, нажмите создание входящего вебхука и скопируйте URL с секретным кодом.

Можно ли через REST записывать товары в инфоблок?

Штатные методы iblock.Element.get и iblock.Element.list - только чтение. Для записи подключите обработчик OnRestServiceBuildDescription и зарегистрируйте свой метод, либо сделайте отдельный D7-контроллер на /api/v1 с нужной валидацией.

Почему при вызове API приходит METHOD_NOT_FOUND?

Проверьте по порядку: правило #^/rest/# в urlrewrite, точное имя метода (iblock.Element.get, не устаревший алиас), scope вебхука, HTTPS и что модуль rest установлен. Тест profile или app.info покажет, жив ли вебхук вообще.

Читайте также

Интеграции с 1С и API
1073 6 мин.

Как настроить регистрацию и личный кабинет покупателя на 1С-Битрикс?

Пошаговая настройка регистрации на сайте битрикс: Главный модуль, main.register, system.auth.form и sale.personal.section с историей заказов и 152-ФЗ.
Интеграции с 1С и API
941 6 мин.

Как настроить скидки и промокоды на 1С-Битрикс: правила корзины и купоны

Пошаговый гайд по скидкам в CMS-магазине: скидка на товар, правило корзины от суммы, купоны с лимитом, приоритеты без конфликтов и тестовый заказ. Не Bitrix24.
Интеграции с 1С и API
757 15 мин.

Что такое компонент в Битриксе и как он работает

Каждый разработчик, впервые столкнувшийся с Битриксом, проходит через своеобразный обряд посвящения. Вначале кажется, что это просто CMS, где можно поправить HTML в визуальном редакторе или дописать пару строк CSS. Но однажды наступает момент, когда нужно изменить логику вывода новостей, отфильтровать товары по хитрому свойству или добавить на страницу нечто совершенно новое. И тут он впервые слышит это слово — «компонент». Для многих этот момент становится стеной. Система, казавшаяся понятной, вдруг превращается в черный ящик, полный непонятных файлов и странных переменных. Но стоит лишь раз заглянуть под капот, как эта стена рассыпается, превращаясь в набор удивительно логичных и мощных строительных блоков. Понимание компонентов — это тот самый щелчок, после которого разработка на Битрикс из мучения превращается в творчество.

Эта статья — ваш проводник в мир компонентов «1С-Битрикс». Мы не будем сыпать сухими терминами из документации. Вместо этого мы совершим путешествие: от философии, заложенной в эту архитектуру, до мельчайших деталей её работы. Мы разберем компонент на атомы — его файлы, логику, шаблон, параметры — и соберем обратно, чтобы вы не просто знали, что это, но и глубоко понимали, почему это работает именно так. Это знание — ключ к эффективной и профессиональной разработке на Битрикс.

Интеграции с 1С и API
717 2 мин.

Установка Composer в 1С-Битрикс

Установка Composer в проекте на 1С-Битрикс требует учета особенностей платформы, чтобы обеспечить корректную работу и интеграцию с системой.