Пресет «JSON-эндпоинт»
Пресет «JSON-эндпоинт» делает из страницы сайта адрес, отвечающий JSON-данными: мобильное приложение, скрипт или робот партнёра забирает данные без HTML. Показываем сборку, шаблон ответа и как отдавать живые данные из CMS. Почти готовый внешний API: отвечаете содержимым CMS без единой строки серверного кода.
JSON-эндпоинт — это «вторая жизнь» ваших данных: те же записи, что рисуются на страницах, отдаются в чистом виде. Так интегрируют мобильные приложения, виджеты и автоматизации.
Где найти пресет
Два пути: галерея пресетов в редакторе (админка → «Сайт» → сценарий → «Пресеты») или поле «Начать с пресета» в окне создания сценария — там «JSON-эндпоинт» один из трёх простых вариантов.
Что собирает пресет
Окна параметров нет: карточка сразу кладёт на холст пару узлов.
| Узел | Роль в сценарии |
|---|---|
| Начало | Запрос по маршруту сценария запускает цепочку |
| JSON-ответ | Отвечает телом-шаблоном, статус 200 |
Шаг за шагом
1. Сгенерируйте схему кликом по карточке (при непустом холсте платформа спросит «Заменить поток?»).

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

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-эндпоинт — тот же механизм, но ответ машинный. Часто их используют вместе: сайт людям, эндпоинт — приложениям. |
Следующая статья: Пресет «Форма с капчей» →
См. также: Узлы-действия: что умеет каждый · Маршруты: как посетитель попадает в сценарий