Модуль для работы API для CMS 1C-Битрикс
Версия модуля main должна быть выше 21.400.0м
Установка производится в папку /local/modules
.
Далее устанавливаем модуль через админку стандартным функционалом Битрикса.
В .htaccess
заменяем старый файл-обработчик роутинга на новый:
#RewriteCond %{REQUEST_FILENAME} !/bitrix/urlrewrite.php$
#RewriteRule ^(.*)$ /bitrix/urlrewrite.php [L]
RewriteCond %{REQUEST_FILENAME} !/bitrix/routing_index.php$
RewriteRule ^(.*)$ /bitrix/routing_index.php [L]
При переходе по url /api/v1
, сайт должен отдать приветственное сообщение.
API работает на Битриксовых Роутингах и Контроллерах.
При установке в конфиг /bitrix/.settings.php
автоматически добавляется новое значение роутига, которое указывает название файла-обработчика для роутинга.
'routing' => array(
'value' => array(
'config' => array(
0 => 'cosmo_api.php',
),
),
'readonly' => false,
),
Сам файл роутинга находится по пути /bitrix/routes/cosmo_api.php
. Файл автоматически создается при установке модуля.
Он, в свою очередь, подключает нужный файл внутри модуля, где описываются роуты.
Роуты находятся внутри папки модуля /routes
.
/routes/routes.php
- точка входа для роутингов. Файл служит для управления логикой подключения нужного роутинг-конфигуратора.
Например, В зависимости от определенных условий может подключаться другая версия API.
На данный момент существет только одна версия api - v1. По-этому, в файле пока нет логических условий, только подключение единственного роутинг-конфигуратора
/routes/v1/routingConfigurator.php
- Роутинг-конфигуратор для API v1. Здесь указываются роутинги API.
Контроллеры, фильтры событий и вспомогательные функции, классы, объекты и т.п., относящиеся к определенный версии API, находятся по пути /lib/v1
относительно модуля.
Где v1 - раздел с названием версии API.
Раздел с контроллерами: /lib/v1/controllers
.
Файлы котроллеров должны иметь постфикс Controller
. Например, productsController
, usersController
.
Контроллер лучше наследовать от объекта \Cosmo\Api\V1\Controllers\Controller
. Который, в свою очередь наследуется от \Bitrix\Main\Engine\Controller
. В нем находятся общие методы для улучшения разработки.
События контроллера, те что указываются в роутинге, в роутинг-кофигураторе, должны иметь постфикс Action
class ProductsController extends BaseController
{
public function listAction() :? array
{
...
}
}
Вызов этого метода в роутинге:
$routes->any(API_PATH.'/products', [ProductsController::class, 'list'])->methods(['GET', 'OPTIONS']);
Раздел с фильтрами событий: /lib/v1/actionfilter
.
Фильтры - это обработчики, которые выполняются до или после Action. С их помощью можно отклонить выполнение действия, либо повлиять на результат действия.
Фильтр должен быть наследован от объекта \Bitrix\Main\Engine\ActionFilter\Base
.