Drupal 8 и GraphQL для "headless" или "decoupled" Drupal — блог Drudesk
050 640 98 44
support@drudesk.com

Искусство эффективности: тандем Drupal 8 и GraphQL

У по-настоящему эффективных сайтов и приложений есть один важный секрет — правильный подход к получению данных с бэкенда. Интересуясь этой темой, все чаще можно услышать такое название, как GraphQL. Созданный в 2015 году, этот новый инструмент покоряет сердца все большего и большего количества разработчиков. Среди них есть и сердца Drupal-разработчиков, которые используют GraphQL для проектов "headless" или "decoupled" Drupal. Давайте рассмотрим, что же делает GraphQL таким особенным и как он сочетается с Drupal 8.

GraphQL как замечательный компаньон для Drupal 8

В проектах "headless" или "decoupled" Drupal, когда речь идет о сочетании бэкенда Drupal с фронтендом на основе JavaScript-фреймворка, нужен «соединительный мостик» между этими двумя системами для успешного получения данных. Традиционно эта роль ассоциируется с веб-сервисами RESTful, которые считаются одной из самых больших преимуществ восьмой версии Drupal.

Однако, GraphQL — разработанный Facebook'ом язык запросов для работы с API — набирает все большую популярность в качестве интересной альтернативы архитектуре REST. GraphQL создан для получения структурированных данных на основе схемы. Он базируется на четкой системе типов и полей.

Прежде чем мы перейдем к одному из самых больших преимуществ GraphQL, зададим небольшой философский вопрос. Как получить в точности то, что вам нужно? Попросить в точности то, что вам нужно, и сформулировать свою просьбу как можно четче!

Конечно, это правило не всегда работает в непредсказуемом реальном мире, но оно работает с GraphQL. «GraphQL-запросы всегда возвращают ожидаемые результаты», говорят его разработчики, и нет причин им не верить.

GraphQL позволяет приложениям на стороне клиента формировать запросы в точности с тем, какие именно данные они хотят получить. Кроме того, все можно сделать в едином запросе. Это особенно полезно для получения сложных и иерархических структур данных.

Никаких повторных визитов к серверу и никаких лишних данных! Этот подход приводит к существенному повышению быстродействия, даже когда речь идет о больших объемах данных или работе на мобильных устройствах с медленным интернетом.

Даже сам основатель Друпала Дрис Байтаерт считает, что в ядро Друпала было бы замечательно включить инструмент для интеграции GraphQL. Интерес Drupal-сообщества к GraphQL особенно разгорелся после доклада на DrupalCon New Orleans от Себастьяна Симсена — разработчика модуля GraphQL, о котором мы расскажем прямо сейчас.

Модуль GraphQL для присоединения GraphQL к Drupal

Не в ядре (пока!), но в Drupal 8 уже есть особый модуль GraphQL, который дает возможность Drupal-разработчикам творить чудеса с GraphQL. Работа над ним идет с молниеносной скоростью, и недавно вышла версия 8.x-3.0-alpha5.

Себастьян Симсен написал в одной из своих статей, что его основной целью было сделать Drupal «хабом данных» на базе GraphQL для приложений на стороне клиента. Это возможно благодаря созданию полной схемы, содержит доступные типы сущностей и полей.

Цель была успешно достигнута! Модуль GraphQL автоматически генерирует схемы GraphQL, что дает возможность представить весь Drupal-сайт как граф данных через TypedData API.

Вокруг GraphQL выросла целая инфрастуктура полезных субмодулей, которые помогают ему выполнять его миссию. Это GraphQL Content, Boolean, File, Image, Entity Reference, Link, Content mutation, Block, Menu, Breadcrumbs и Views. Их подробный обзор можно увидеть в недавней статье активного мейнтейнера модуля — Филиппа Мелаба.

Напоследок

Следуя философии GraphQL, формулируйте свои желания точно — и они сбудутся! Ведь именно для этого мы и работаем. Напишите нам, и наши разработчики помогут вам получить лучшие результаты от сочетания GraphQL и Drupal 8!

Похожие материалы