Маршруты: как посетитель попадает во флоу

У каждого флоу есть адрес на сайте — маршрут. В этой статье: где он живёт, что такое методы (GET/POST), как на одном адресе ужить и страницу, и форму, и что такое TTL.

Где посмотреть маршрут

Откройте флоу — в шапке над холстом строка «Маршруты:» с адресами, и рядом кнопка «Пути · 1». Это окно управления привязками.

Окно «Пути»: маршрут GET

При создании флоу путь вы указали в диалоге — он и стал маршрутом. Но в окне «Пути» его можно сменить в любой момент, а ещё — добавить флоу дополнительные пути (один и тот же флоу может отвечать на нескольких адресах).

Методы: GET, POST, PUT, DELETE

Метод — это то, как посетитель (или программа) обратился к адресу:

Метод Когда срабатывает
GET Просто открыли страницу в браузере
POST Отправили форму — или программа передала данные (например, JSON); внутри флоу тело доступно как form.* либо json.*
PUT / DELETE Запросы программ (API)
HEAD, OPTIONS Не назначаются: первый — технический дубль GET, второй — служебный запрос браузера

В окне «Пути» методы включаются переключателями. Так работает пара из демо-проекта: на адресе /contacts висят два флоу — страница «Контакты» на GET и «Заявка» на POST. Человек открывает страницу (GET) — видит форму; отправляет её (POST) — заявка уходит в флоу «Заявка». Адрес один, а поведение разное.

Нюанс: у POST-флоу (обычная отправка формы) query-параметры из адреса недоступны — {{ query.… }} заполняется только у GET. Нужно значение из адреса? Прокиньте его скрытым полем формы или повесьте флоу на GET.

Окно «Пути»: маршрут POST

Обратите внимание на TTL у «Заявки» — ноль. Про это ниже.

Переменные в пути: /blog/:slug

Кусок пути, начинающийся с двоеточия, — переменная. Маршрут /blog/:slug отвечает на любой адрес из двух кусков: и на /blog/pervaya-zametka, и на /blog/vino-geograf (количество кусков пути должно совпадать), а внутри флоу и шаблона значение доступно как {{ params.slug }}. Обычный текстовый кусок пути всегда старше переменной: /blog/about победит /blog/:slug.

TTL: сколько жить ответу

TTL (время жизни, секунды) — настройка кэша на маршруте:

  • TTL больше нуля — готовые ответы страницы запоминаются и отдаются следующим посетителям без пересборки. Быстро и дёшево. Ставьте 300 (пять минут) для витрин, каталогов, блогов.
  • TTL 0 — каждый запрос исполняет флоу заново. Ставьте 0 всему, что зависит от посетителя: личные страницы, формы, поиск.

Правила кэша простые: запоминаются только ответы для анонимных посетителей; вошедшие участники всегда получают живые данные; любая публикация на сайте сбрасывает кэш. Страница «мигает» состояниями — проверьте, не ставит ли ваш флоу cookie (такие ответы не кэшируются).

Если метод не назначен

Запрос неподключённым методом получит ответ «метод не разрешён» (405). Для GET-страницы, где форма шлёт POST в тот же адрес, это сигнал: вы забыли включить POST у флоу-обработчика.

Только для участников

Закрытую часть сайта (личный кабинет, оплаченные материалы) делает узел «Начало»: кликните по нему на холсте и включите «Только для участников». Тогда флоу начинается с проверки: вошёл ли посетитель. Невошедших платформа уводит на страницу входа, а запросы без входа (POST, превью) отклоняет. Настройка автоматически синхронизируется с маршрутом — включать что-то дополнительно в «Путях» не нужно.

Скрытый запуск по заголовку (для своих интеграций)

Один и тот же адрес может отвечать и людям, и программам: привязке можно задать условие по заголовку запроса — тогда запрос с этим заголовком исполнит «программный» флоу (например, JSON-ответ), а все остальные — обычную страницу. Настраивается в привязках маршрута; это продвинутый приём для API-интеграций.


Следующая статья: Черновик, превью и публикация