Пресет «JSON-эндпоинт»

Пресет «JSON-эндпоинт» делает из страницы сайта адрес, отвечающий JSON-данными: мобильное приложение, скрипт или робот партнёра забирает данные без HTML. Показываем сборку, шаблон ответа и как отдавать живые данные из CMS. Почти готовый внешний API: отвечаете содержимым CMS без единой строки серверного кода.

JSON-эндпоинт — это «вторая жизнь» ваших данных: те же записи, что рисуются на страницах, отдаются в чистом виде. Так интегрируют мобильные приложения, виджеты и автоматизации.

Где найти пресет

Два пути: галерея пресетов в редакторе (админка → «Сайт» → сценарий → «Пресеты») или поле «Начать с пресета» в окне создания сценария — там «JSON-эндпоинт» один из трёх простых вариантов.

Что собирает пресет

Окна параметров нет: карточка сразу кладёт на холст пару узлов.

Узел Роль в сценарии
Начало Запрос по маршруту сценария запускает цепочку
JSON-ответ Отвечает телом-шаблоном, статус 200

Шаг за шагом

1. Сгенерируйте схему кликом по карточке (при непустом холсте платформа спросит «Заменить поток?»).

Холст пресета: Начало → JSON-ответ

2. Откройте узел «JSON-ответ». По умолчанию он отвечает {"ok": true} со статусом 200 и Content-Type: application/json; charset=utf-8.

Инспектор узла JSON-ответ: тело, статус, Content-Type

3. Отредактируйте тело-шаблон. Это текст с подстановками, который станет JSON-ответом. Тело собирается по обычным правилам шаблонов: в нём доступны данные формы (form.<имя>), ответы GraphQL-узлов (results.<ключ>…), параметры ссылки (query.<параметр>) и поля маршрута — точный синтаксис с примерами в статье «Узлы-действия».

4. Дополните схему данными. Чтобы отдавать записи из CMS, добавьте перед ответом узел GraphQL («Добавить узел» → GraphQL) с запросом к вашему типу контента — результат попадёт в results.<ключ> шаблона.

5. «Сохранить черновик» → «Опубликовать сценарий» («Черновик, превью и публикация»).

Как это выглядит снаружи

После публикации адрес сценария (например /api/services) отвечает JSON-телом на любой GET-запрос. Проверить можно прямо в браузере или:

curl https://ваш-сайт/api/services

Параметры ссылки доступны как query.<имя>: /api/services?page=2{{ query.page }} — так делают выборку и фильтрацию.

Что проверить после генерации

  • Ответ приходит именно JSON-ом: в браузере видно тело без HTML-обёртки.
  • Статус и Content-Type в узле соответствуют ожиданиям потребителя (мобильное приложение обычно ждёт 200 и application/json).
  • Данные из CMS подставляются (если добавили GraphQL-узел).

Тонкости

  • JSON-эндпоинт отвечает на обычные GET-запросы и POST-привязку маршрута не создаёт.
  • Ошибки потребителю лучше отдавать тем же узлом с другим статусом: продублируйте узел «JSON-ответ» на ветке условия со статусом 404 и телом {"error": "not_found"}.
  • Если эндпоинт должен быть приватным — не публикуйте его адрес, а проверяйте секретный параметр запроса условием перед ответом.

Частые вопросы

Вопрос Ответ
Отдаётся текст с кавычками, а не JSON Тело-шаблон — это текст: следите за запятыми и скобками сами. Проверяйте ответ валидатором JSON после каждой правки шаблона.
Как отдать список записей целиком? GraphQL-узел перед ответом + шаблон, собирающий JSON из results.<ключ>…; правила конструирования — в «Узлах-действиях».
Кто может читать эндпоинт? Все, кто знает адрес. Для приватных данных добавьте перед ответом условие с проверкой секретного параметра ссылки.
Чем это отличается от плагина «Сайт»? Плагин «Сайт» рисует HTML-страницы; JSON-эндпоинт — тот же механизм, но ответ машинный. Часто их используют вместе: сайт людям, эндпоинт — приложениям.

Следующая статья: Пресет «Форма с капчей»

См. также: Узлы-действия: что умеет каждый · Маршруты: как посетитель попадает в сценарий