Обзор модуля
Описание модуля
Модуль помогает организовать программный интерфейс для внешних и внутренних приложений.
Ранее нами уже был разработан и опубликован на бесплатной основе модуль REST API. Данный модуль хорошо себя зарекомендовал для решения задач межплатформенных обменов, показателями этого факта являются отзывы и количество скачиваний. Со временем стало появляться множество запросов по доработке модуля, и как следствие, мы приняли решение о написании новой, усовершенствованной версии уже полюбившегося модуля.
В данной версии мы учли все недостатки и пожелания из прошлой версии, очень хорошо оптимизировали ядро модуля, теперь оно работает гораздо быстрее, и на этом мы делаем свой основной упор.
Помимо переработки ядра немаловажным фактором является и добавление карты роутов. За счет карты появилась возможность очень гибко настраивать параметры для любого отдельного роута.
Что получите от приобретения модуля
Уменьшение стоимости разработки API за счет сокращения времени на разработку собственного интерфейса.
Поддержка от профессионалов, имеющих большой опыт создания API.
Готовый RESTful API интерфейс, с библиотекой встроенных методов, а также с возможностью создавать собственные, кастомные методы, реализующие любую, необходимую логику. И конечно, с автогенерируемой документацией, которую можно предоставить сторонним разработчикам.
Процесс
Ознакомьтесь с документацией по модулю.
Ознакомьтесь с библиотекой встроенных роутов.
Добавьте собственную карту роутов со списком необходимых роутов. Примечание: карты можно хранить в любой папке сайта.
Укажите контроллеры для роутов, которые будут обрабатывать входящие запросы. Контроллеры могут быть, как классами, так и обычными файлами (скриптами). Примечание: контроллеры можно хранить в любой папке сайта.
При возникновении вопросов по модулю обратитесь в техподдержку через контакты.
Возможности
Загрузка интерфейса до запуска публичной части сайта.
Отсутствие необходимости в дополнительной настройке платформы.
Виртуальный путь к интерфейсу, в том числе и от корня домена (https://domain.com/ или https://domain.com/{api}/ или https://api.domain.com/).
Настройка доступа в административной части сайта к разделам модуля на уровне групп пользователей.
Автогенерируемая документация в административном разделе.
Автогенерируемая документация для клиента в JSON-формате.
Поддержка карт роутов.
Создание произвольных роутов (/{api}/user/, /{api}/user/get/, /{api}/user/v1/, ... ).
Установка собственных контроллеров для роутов (классы, внешние классы, php-файлы).
Настройка уровня доступа к роутам.
Валидация параметров входящего запроса.
Авторизация по логину и паролю для конкретного роута.
Авторизация по токену для конкретного роута.
Генерация токенов для пользователей.
Поддержка списка "белых" логинов/токенов для конкретного роута.
Проверка групп пользователя при авторизации для конкретного роута.
Возможность ограничения количества запросов в единицу времени на уровне групп пользователей.
Возможность передачи дополнительных заголовков при ответе.
Возможность деактивировать конкретный роут.
Кэширование входящих запросов и ответов средствами платформы.
Журналирование запросов и ответов.
Настройка CORS из административной части сайта.
Наличие функций упрощающих разработку интерфейса.
Наличие библиотеки встроенных роутов ускоряющих разработку интерфейса.
Наличие примеров и руководств для разработчика.
FAQ
Чем данный модуль отличается от REST API Битрикса?
В REST API Битрикса мало гибкости, есть необходимость использовать именно предоставленные роуты. Данный модуль позволяет формировать свои роуты, писать свою логику при обработке запроса, то есть предоставляет больше гибкости;
REST API Битрикса реализовано не совсем согласно архитектурному стилю REST;
В REST API Битрикса, при обработке запроса порой происходят «лишние» действия, которые могут создавать дополнительную задержку при ответе клиенту, может это и не сильно критично, но API должно быть настолько быстрым, насколько это возможно;
API не всегда должно быть доступно всем, иногда оно должно быть уникально (роуты, параметры, ... ) для проекта, но за счет общего стиля REST API Битрикса, документация которого в общем доступе, эта уникальность нарушается и создает дополнительную лайзеку для атак на сайт. Используя данный модуль, можно указывать собственное имя роута, где будет работать API. Например: domain.com/rest/ или domain.com/api/, или domain.com/rest-api/, или api.domain.com, и так далее;
В REST API Битрикса нет возможности как-то управлять интерфейсом из административной части сайта;
В REST API Битрикса нет возможности регулировать доступы к роутам, ограничивать доступ по количеству запросов от клиента, журналировать запросы и ответы, и некоторые другие функции.
На текущий момент, в REST API Битрикса, например, нет возможности создать заказ через API. Используя данный модуль вы можете реализовать этот функционал.
В целом, данный модуль пишется и развивается на основе запросов пользователей, но REST API Битрикса пишется на усмотрение Битрикса. Плюс это или минус - решать вам.
Чем данный модуль отличается от бесплатной версии? [архив]
Переписано ядро - увеличена скорость.
Изменена архитектура модуля - увеличена скорость.
Работа с роутами переведена на карты - увеличена скорость, больше гибкости в настройке и обработке каждого роута.
Введены функции - увеличение скорости разработки. Пример функций: route(), request(), response() и прочие.
Добавлена возможность не указывать имя роута для API. То есть, теперь API может запутаться относительно корня домена.
Добавлена автогенерируемая документация, то есть теперь описание всех роутов можно увидеть прямо из административной или публичной части сайта.
Добавлено кэширование. Теперь можно кэшировать запросы и ответы на них, тем самым увеличивая скорость ответа и снижая нагрузку на базу данных.
Добавлена возможность ограничивать доступ к роуту в зависимости от количества запросов со стороны клиента.
Автоматическое подключение модуля в файле init.php.
Примечание
Минимальная версия PHP >= 8.0 (согласно требованиям платформы). Использование более ранней версии возможно, но крайне не рекомендуется, в виду возникновения ошибок.
Обязательно наличие файла для обработки 404 ошибки (обычно имеется в корне сайта - 404.php) со всеми "директивами" 1С-Битрикса.
Если используется веб-сервер Apache: обязательно прописать ErrorDocument 404 /404.php в .htaccess, расположенный в корне сайта, или прямо в конфигурационном файле Apache.
Если используется веб-сервер Nginx: обязательно прописать error_page 404 = /404.php?$query_string; в секцию server конфигурационного файла (обычно nginx.conf).
Для работы CORS-запросов необходимо чтобы на веб-сервере были разрешены запросы типа OPTIONS.
Спасибо Вам за ознакомление с нашим модулем. Если у Вас имеются какие-либо вопросы/предложения, то мы всегда готовы обсудить их через контакты.
Last updated