Документация1С-Битрикс: Модулиnative.apiРазработчикамКарта роутов

Ответ и кеш

Кеширование

Срок задаётся в RouteConfig::CACHE ключом CacheConfig::TTL, в секундах.

Значение ttlПоведение
Больше 0Кеширование результата, в том числе для POST и других методов
0Кеширование роута отключено
Не заданоОбщая настройка модуля; применяется только к GET и HEAD
// Кешировать результат на 5 минут; 0 — отключить кеш
RouteConfig::CACHE => [
    CacheConfig::TTL => 300,
],

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

Доступ и параметры проверены
      ↓
Кеширование включено?
├─ Нет → выполнить контроллер
│        └─ Сформировать ответ
│
└─ Да → результат есть в кеше?
         ├─ Да → сформировать ответ из кеша
         └─ Нет → выполнить контроллер
                  └─ Сохранить результат в кеш
                     └─ Сформировать ответ

При попадании в кеш контроллер и его события не вызываются. Схема показывает штатный ход запроса; обработчики событий могут изменить результат или остановить выполнение.

Кеш учитывает метод, адрес, контроллер, действие, TTL, формат, пользователя, клиента и параметры. Если результат зависит от других данных, отключите кеш.

После обновления карты требуется очистка кеша модуля.

Формат ответа

Формат задаётся в RouteConfig::FORMAT. По умолчанию используется JSON. Параметр format в строке запроса имеет приоритет над картой.

JSON

// Ответ в JSON
RouteConfig::FORMAT => TypeConfig::FORMAT_JSON,

Примеры: с техническими полями и без них.

XML

// Ответ в XML
RouteConfig::FORMAT => TypeConfig::FORMAT_XML,

Для XML без технической обёртки контроллер должен вернуть один корневой элемент. Примеры: с техническими полями и без них.

Технические поля

Технические ключи ответа можно включить или выключить для каждого роута. В RouteConfig::RESPONSE это задаёт ResponseConfig::TECHNICAL_KEYS_DISABLED. Если ключ не задан, используется общая настройка модуля.

// Включить технические ключи
RouteConfig::RESPONSE => [
    ResponseConfig::TECHNICAL_KEYS_DISABLED => false,
],
// Выключить технические ключи
RouteConfig::RESPONSE => [
    ResponseConfig::TECHNICAL_KEYS_DISABLED => true,
],

Структура ответов: JSON и XML. Ошибки модуля сохраняют служебную структуру.

HTTP-статус и заголовки

Задаются в массиве результата контроллера:

КонстантаЗначение
ResponseConfig::STATUSstatus
ResponseConfig::HEADERSheaders
// Создан заказ: HTTP 201 и ссылка на него в заголовке Location
return [
    ResponseConfig::STATUS => HttpStatusConfig::HTTP_STATUS_201,
    ResponseConfig::HEADERS => [
        'Location' => '/api/orders/501',
    ],
    'order' => [
        'id' => 501,
    ],
];

status и headers управляют HTTP-ответом и не попадают в данные результата.

Статус по умолчанию

Если контроллер не задал статус:

МетодHTTP-статус
POST201
DELETE204
Остальные методы200

Ответ без тела

Тело ответа не отправляется:

  • Для метода HEAD
  • Для статусов 1xx, 204, 205 и 304