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!