Лідери думок
GraphQL – зміна та покращення способу спілкування застосунків

Не минуло багато часу, коли наступне покоління буде купувати криптовалюту та перевіряти свій баланс довірчих фондів у лобі Fortnite між іграми. Це станеться завдяки багатьом технологічним досягненням.
Одним із таких досягнень є спосіб передачі даних (читання, оновлення, додавання/видалення) між застосунками та компаніями, які їх володіють. Архітектура програмних інтерфейсів застосунків (API) визначає цю комунікацію даних, і коли ці стандарти розвивалися, вимоги до обробки та зберігання даних стали менш складними.
Лідером у цьому напрямку є GraphQL, відкрита мова запитів та маніпуляцій з даними. Основою його екосистеми є специфікація та колекція інструментів, створених навколо нього.
GraphQL не є новим – час рухається швидко. Facebook розробив його у 2012 році та використовував тільки внутрішньо для розробки мобільних застосунків. У 2015 році його було відкрито, і сьогодні він підтримується фундацією GraphQL (https://graphql.org/foundation/), яка керує його подальшим розвитком.
Чому я пишу про це зараз? Типовий шлях до технологічної адоптації включає такі етапи: 1) хобі/особисті проекти, 2) реалізація на декількох мовах, 3) реалізація у стартапах та малих компаніях, 4) середні компанії та використання у розробці продукту, 5) великі корпорації та технологічні гіганти.
GraphQL досягнув рівня 5. На сьогодні його використовують GitHub, Pinterest, Shopify, Microsoft, а також, починаючи з березня 2022 року, Salesforce.
Шукаючи спосіб ефективніше отримувати дані з Salesforce, я натрапив на їхню документацію GraphQL та почав читати та вивчати способи його реалізації.
Як він відрізняється від традиційного REST API?
- Одним із основних переваг є те, що з GraphQL ви можете запитувати дані та отримувати тільки те, що вам потрібно. Якщо вам потрібні тільки два поля, пов’язані з певним інцидентом клієнта, то саме це ви отримаєте. Традиційне REST API поверне вам усі поля, пов’язані з інцидентом, що може бути понад 100 полів. Тепер вам потрібно буде щось зробити з усіма цими даними, яких ви не хотіли спочатку. Це називається перефетчінгом даних (підфетчінг також є проблемою).
- Вище згадане робить GraphQL швидшим за інші методи API при поверненні даних.
- GraphQL є сильно типізованою мовою, що серед іншого означає, що помилки коду виявляються до виконання програми, а не під час її виконання.
- Було створено велику кількість інструментів навколо GraphQL, що зробило його дуже дружнім до розробників.
- GraphQL має єдину кінцеву точку, на відміну від REST API, яке має кілька кінцевих точок. Це означає, що всі ваші дані можна отримати в одному запиті.
Дві сторони медалі: запитувач (клієнт) та постачальник (хост GraphQL)
Я розглянув GraphQL до цього моменту з точки зору “запиту” даних. Наприклад, компанії, такі як Salesforce або Microsoft, створили GraphQL API, який ви можете використовувати для запиту та маніпуляції даними (читання, оновлення, додавання).
Наприклад, якщо ми хочемо включити дані з Salesforce, пов’язані з інцидентами клієнтів, до клієнтського порталу, найефективнішим способом буде запит даних через GraphQL-запит від порталу до сервера GraphQL Salesforce. Ви отримаєте саме ті дані, які вам потрібні, без підфетчінгу чи перфетчінгу, і в результаті не буде необхідності додаткової обробки чи зберігання даних.
Інша сторона медалі – організація, яка створює архітектуру GraphQL, щоб клієнти мали ефективний спосіб доступу до даних, які вони бажають.
Під час будівництва GraphQL API організація створює модель, яка об’єднує всі її системи в одну модель. Це об’єднання усуває складність основної системи. Як тільки робота буде завершена, запит даних стає безшовним через API.
Коли я порівнюю застосунки або постачальників, я розглядаю, які функції вони пропонують мені для отримання моїх даних. Я не хочу мати бути змушеним надсилати їм електронні листи або покладатися на жорстко визначені звіти. Я хочу мати можливість “підключитися” до моїх даних, запитуючи їх гнучким та своєчасним чином. Якщо вибір падає на два застосунки/постачальники, які подібні за іншими порівняльними ознаками, і один з них пропонує REST API або GraphQL API, я напевно виберу той, який має API.












