Задача: настроить REST API для публикации контента в нестандартную CMS так, чтобы можно было автоматизировать загрузку статей, медиа и метаданных из внешних систем. В руководстве собраны конкретные шаги, примеры запросов, шаблоны кода и отличия на примерах CMS‑интеграция WordPress и 1C‑Битрикс интеграция.
Проверить наличие нативного REST API. Если его нет, нужно добавить кастомный endpoint. Критерии оценки:
CMS‑интеграция WordPress: если используете WordPress 4.7+, есть WP REST API. Минимальный сценарий публикации:
Пример команды curl (интерактивный вид):
curl -X POST 'https://site.example/wp-json/wp/v2/posts' \
-H 'Authorization: Basic base64(user:application_password)' \
-H 'Content-Type: application/json' \
-d '{title: 'Заголовок', content: 'Текст статьи', status: 'publish'}'
Советы:
В 1C‑Битрикс чаще приходится создавать кастомный обработчик, потому что нативный REST ориентирован на Bitrix24. Подход:
Минимальный PHP-пример приемника:
<?php
require_once($_SERVER['DOCUMENT_ROOT'].'/bitrix/modules/main/include/prolog_before.php');
$payload = json_decode(file_get_contents('php://input'), true);
if (!$payload || $_SERVER['HTTP_X_API_KEY'] !== 'your_secret') {
http_response_code(403);
echo 'Forbidden';
exit;
}
$el = new CIBlockElement;
$fields = array(
'IBLOCK_ID' => 5,
'NAME' => $payload['title'],
'DETAIL_TEXT' => $payload['content'],
);
$ID = $el->Add($fields);
if ($ID) echo json_encode(['result' => 'ok', 'id' => $ID]);
else { http_response_code(500); echo $el->LAST_ERROR; }
?>
Особенности:
Добавляйте заголовок X-Request-Id или поле external_id. Логика:
Два подхода:
| Подход | Когда использовать | Плюсы | Минусы |
|---|---|---|---|
| Загрузка файлов в CMS | Контроль за хранением | Надежно, можно генерировать превью | Нагрузка на хранилище |
| Хранение по URL | CDN или внешнее хранилище | Минимальная нагрузка на CMS | Зависимость от сторонних сервисов |
Обязательные метрики:
Логи храните в отдельной таблице и отправляйте ключевые события в систему мониторинга (Prometheus, Sentry).
| Критерий | WordPress | 1C‑Битрикс |
|---|---|---|
| Нативный REST | Да, /wp-json/wp/v2 | Часто нужен кастомный обработчик |
| Аутентификация | application passwords, JWT, OAuth | вебхуки, shared secret, custom |
| Массовая загрузка медиа | через media endpoint | лучше через очередь |
| Типичное время внедрения | 1-3 дня | 3-10 дней |
Кейс A: массовая миграция новостей. Решение: собрать CSV с external_id, свернуть в пакетные запросы и применить параллельную загрузку с контролем скорости. Для WordPress используйте WP-CLI для batch задач.
Кейс B: ежедневная лента с медиа из DAM. Решение: выгрузка метаданных + ссылки; в CMS сохраняем только ссылку и кешируем превью через CDN.
Если нужно, могу подготовить готовые скрипты для вашего случая: curl команды, PHP-приёмник для 1C‑Битрикс или Node/Python клиент для REST API для публикации и CMS‑интеграция WordPress. Уточните CMS и формат входных данных.