7.0 KiB
REST API (richcode.api)
Главная техническая особенность проекта. Сторонний модуль richcode.api версии 3.1.5 (2024-08-02) отдаёт наружу REST-интерфейс к сущностям сайта: товарам, заказам, складам, пользователям, сделкам. Через него данными можно управлять без админки — вероятно, ради этого он и стоит.
Проверено по коду модуля: bitrix/modules/richcode.api/ (include.php, options.php, lib/core/Route.php).
Точка входа и формат URL
Запрос перехватывается обработчиком модуля на старте страницы (не через urlrewrite.php). Базовый путь задаётся в настройках модуля, по умолчанию /api/.
Структура адреса (из lib/core/Route.php):
/{apiPath}/{module}/{token}/{controller}/{action}
apiPath— базовый путь (напримерapi).module— область:iblock,sale,main,crm.token— токен авторизации (если включена авторизация по токену).controller/action— что вызываем. Действие — это оставшиеся сегменты пути после контроллера, склеенные точкой (…/order/status/set→status.set).- Параметры: для GET — query-строка; для POST/PUT/DELETE — тело JSON (
Content-Type: application/json).
Ответы — JSON (lib/core/Response.php).
Что доступно (контроллеры)
Из карты автозагрузки в include.php:
| Модуль | Контроллер | Назначение |
|---|---|---|
iblock |
Element |
CRUD элементов инфоблока: свойства (в т.ч. UF), разделы, файлы, единицы измерения |
sale |
Order |
заказы: корзина, свойства заказа, оплаты, отгрузки |
sale |
Product |
товары каталога и остатки на складах |
sale |
Store |
склады и их остатки |
sale |
Measure |
единицы измерения |
sale |
Discount |
скидки |
main |
User |
создание/обновление пользователей |
crm |
Deal |
сделки (CRM) |
Важно: каталог (инфоблок 2) обслуживает sale/product, а iblock/element — только не-каталожные инфоблоки. Действия у них одинаковые.
[!info] Полный список действий и примеры Все действия каждого контроллера, их параметры и готовые примеры запросов
curlвынесены в отдельный справочник — REST API — методы и примеры (richcode.api). Он составлен по исходникам контроллеров, а не по догадкам.
Авторизация
- Включается опцией «Авторизация по токену» (
USE_AUTH_TOKEN). - Токен хранится в поле пользователя
UF_API_TOKEN(по кодуlib/core/Tokens.php; в подсказке настроек оно ошибочно названоUF_RESTFUL_API_TOKEN). Токены генерируются в настройках модуля («Сгенерировать» / «Пересоздать»). - Токен передаётся сегментом URL (
…/{module}/{token}/{controller}/…), а не заголовком — рабочий код читает его из пути. Пользователь-владелец токена должен состоять в заданной группе. - Каждый вызов идёт от имени пользователя-владельца токена — права API = права этого пользователя. Это важно для безопасности: см. Информационная безопасность (apelsincom).
- Полная схема адресов, все действия и примеры
curl— в REST API — методы и примеры (richcode.api).
Настройки модуля (что где крутится)
Опции (админка → Настройки → Список модулей → richcode.api, или в БД):
| Опция | Смысл |
|---|---|
USE_API |
включить/выключить API |
API_PATH |
базовый путь (пример /api/) |
USE_AUTH_TOKEN |
авторизация по токену |
ONLY_HTTPS_EXCHANGE |
принимать только https |
USE_BLACK_LIST_ADDRESS_FILTER / BLACK_LIST_ADDRESS |
чёрный список IP |
USE_WHITE_LIST_ADDRESS_FILTER / WHITE_LIST_ADDRESS |
белый список IP |
USE_ACCESS_CONTROL_ALLOW_ORIGIN_FILTER |
CORS-фильтр по домену |
LOGGING / hl_logging |
лог запросов в highload-блок «Лог запросов» |
Логирование
При включённом LOGGING каждый запрос пишется в highload-блок (его ID — в опции hl_logging) с полями UF_API_LOG_TIME, UF_API_LOG_URL, UF_API_LOG_METHOD, UF_API_LOG_DATA. Удобно для отладки интеграций; помните, что в лог попадает тело запроса — не логируйте лишнего (ПДн).
Поток запроса
sequenceDiagram
participant C as Клиент
participant R as richcode.api (Route)
participant B as Bitrix (iblock/sale/main/crm)
C->>R: HTTP /api/{module}/{token}/{controller}/{action} (+JSON)
R->>R: проверка HTTPS / IP / CORS / токена
R->>B: вызов контроллера от имени пользователя токена
B-->>R: результат
R-->>C: JSON-ответ (+ запись в лог, если включён)
[!warning] Что проверить и обезопасить
- Точный
API_PATHи какие пользователи-токены заведены — по файлам не видно, смотрите настройки модуля.- Включены ли
ONLY_HTTPS_EXCHANGE, белый список IP и CORS — это ключевые меры защиты API.- Токены = ключи от данных. Их хранение, ротация и права пользователей-владельцев — в Информационная безопасность (apelsincom).
См. также
- Информационная безопасность (apelsincom)
- Интеграции (apelsincom)
- Инфоблоки и каталог (apelsincom)