Библиотека запросов

Библиотека запросов — это именованные GraphQL-запросы, которые лежат в одном месте и переиспользуются где угодно. Один раз описали «список услуг» — и берёте его по имени, хоть на одной странице, хоть на десяти.

Зачем библиотека

Узел GraphQL во флоу умеет писать запрос прямо в себе («Вручную»), но у такого запроса два минуса: он спрятан внутри схемы, и если тот же список данных нужен на второй странице — придётся копировать. Библиотека решает оба: запрос лежит в одном месте под именем, а флоу ссылаются на него.

Библиотека запросов

Как устроена вкладка

Слева — список запросов (имя + первая строка тела), справа — редактор выбранного запроса:

  • Имя запроса — латиницей, по нему на вас будут ссылаться (в нашем демо — services_list);
  • Тело запроса — сам GraphQL; редактор подсказывает поля по живой схеме вашего проекта, так что опечататься в имени типа сложно;
  • «Только для участников» — запрос отдаёт данные участника (личные страницы); анонимный JSON-API на такой запрос ответит отказом;
  • «Сохранить» — правка садится в черновик и попадает на сайт после публикации (как у флоу и шаблонов).

Как использовать запрос

Два пути:

  1. Во флоу — в узле GraphQL переключите «Источник запроса» на «Из библиотеки» и выберите имя. Ключ результата по-прежнему ваш (results.ключ / в шаблоне ключ.data.…).
  2. На маршруте — адрес сайта может получить запрос напрямую, без отдельного флоу: данные придут в шаблон. Как это устроено — в статье «Маршруты».

Изменение запроса в библиотеке обновляет все места, где он используется, — это и сила, и ответственность: правка уезжает на все страницы сразу. Поэтому правки живут в черновике: посмотрели на превью, убедились, что ничего не сломалось, — публикуйте.

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

Вопрос Ответ
Удалил запрос — что со страницами Флоу, ссылавшийся на него, начнёт отвечать ошибкой. Имя свободно — можно создать заново.
Запрос в узле «сломался» после правки в библиотеке Сверьте тело запроса: узел ссылается по имени, а не хранит копию.
Нужно чуть другой список на другой странице Сделайте отдельный запрос в библиотеке (services_by_city), а не правьте общий.

Следующая статья: Первый флоу за 10 минут