Підручник GraphQL для початківців: що таке, функції та приклад

Що таке GraphQL?

GraphQL — це серверна технологія прикладного рівня, розроблена Facebook для виконання запитів із наявними даними. GraphQL може оптимізувати виклики RESTful API. Це дає декларативний спосіб отримання та оновлення ваших даних. GraphQL допомагає вам завантажувати дані з сервера на клієнт. Це дозволяє програмістам вибирати типи запитів, які вони хочуть робити.

Навіщо використовувати GraphQL?

Нижче наведено причини використання GraphQL:

  • Він забезпечує зрозумілий для людини запит.
  • У GraphQL дуже легко працювати з багатьма базами даних.
  • Він підходить для мікросервісів і складних систем.
  • Ви можете отримати дані за допомогою одного виклику API.
  • Це допомагає вам із групуванням і кешуванням запитів.
  • Ви не стикаєтесь із проблемами надсилання та недобірки.
  • Адаптація запитів до ваших потреб.
  • Це допоможе вам знайти схему у відповідному форматі.
  • GraphQL автоматично синхронізує документацію зі змінами API.
  • Еволюція API можлива без керування версіями.
  • Поля GraphQL використовуються в кількох запитах, які можна передавати на вищий рівень компонентів для повторного використання.
  • Ви можете вибрати, які функції відображати та як вони працюють.
  • Його можна використовувати для швидкого створення прототипів додатків.

Застосування GraphQL

Ось важливі програми GraphQL:

  • Він забезпечує Relay та інші клієнтські інфраструктури
  • GraphQL допоможе вам покращити продуктивність мобільного додатка.
  • Це може зменшити проблему надлишкової вибірки, зменшити хмарний сервіс на стороні сервера та зменшити використання мережі на стороні клієнта.
  • Його можна використовувати, коли клієнтська програма має вказати, які поля потрібні в довгому форматі запиту.
  • GraphQL можна використовувати в повній мірі, коли вам потрібно додати функціональність до старого або існуючого API.
  • Він використовується, коли потрібно спростити складний API.
  • Змішайте та розімніть шаблон фасаду, який зазвичай використовується в об’єктно-орієнтованому програмуванні.
  • Коли вам потрібно зібрати дані з кількох місць в один зручний API.
  • Ви можете використовувати GraphQL як абстракцію в існуючому API, щоб визначити структуру відповіді на основі потреб користувача.

Що потрібно вивчити перед вивченням GraphQl?

Цей навчальний посібник із GraphQL базується на Express та NodeJs. Тому ви можете легко вивчити GraphQL, маючи базове розуміння NodeJS.

Ключові компоненти GraphQL

У цьому посібнику з GraphQL давайте вивчимо ключові компоненти GraphQL:

Ключові компоненти GraphQL
Ключові компоненти GraphQL

Як показано на малюнку вище, є три ключові компоненти GraphQL: 1) Запит, 2) Резолвер і 3) Схема.

Запит

Запит — це запит API, зроблений програмою клієнтської машини. Він підтримує доповнення та вказує на масиви. Запит використовується для читання або отримання значень.

Частини запиту:

Нижче наведено важливі частини запиту

  1. Поле:

Поле просто вказує на те, що ми запитуємо у сервера певну інформацію. Нижче наведено приклад GraphQL поля в запиті graphQL.

query {
    team {
        id name
    }
}

"data": {
    "team":[ {
        "id": 1, 
        "name": "Avengers"
    }
    ,
    …
]
}
}

У наведеному вище прикладі GraphQL ми запитуємо у сервера поле під назвою team та його підполя, як-от id та name. Сервер GraphQL повертає дані, які ми запитували.

  1. Аргументи

In REST, ми можемо передати лише один набір аргументів як сегменти URL-адреси та параметри запиту. Щоб отримати певний профіль, типовий виклик REST виглядатиме так:

GET /api'team?id=2 Content-Type: application JSON
 {
    "id": 2, 
    "name": "Justice League."
}

Вирішити

Резолвери надають вказівки для перетворення операції GraphQL у дані. Вони вирішують запит до даних, визначаючи функції резолвера.

Він показує серверу процес, а також розташування для отримання даних відповідно до певного поля. Резолвер також розділяє схему бази даних і схему API. Відокремлена інформація допомагає змінювати вміст, отриманий із бази даних.

схема

Схема GraphQL є центром реалізації GraphQL. Він описує функціональність, доступну для клієнтів, які підключаються до нього.

Особливості GraphQL

Ось важливі функції GraphQL:

  • Він забезпечує декларативну мову запитів, що не є обов’язковим.
  • Він ієрархічний і орієнтований на продукт.
  • GraphQL строго типізований. Це означає, що запити виконуються в контексті певної системи.
  • Запити в GraphQL кодуються в клієнті, а не на сервері.
  • Він має всі функції прикладного рівня моделі OSI.

Клієнти GraphQL

Клієнт GraphQL — це код, який робить запити POST до відповідного сервера GraphQL. Ви можете запитувати GraphQL API напряму, але хорошим підходом є використання спеціальної клієнтської бібліотеки за допомогою Relay.

Цей довідник - JavaБібліотека скриптів розроблена Facebook для створення програм React з GraphQL. Клієнтами GraphQL можуть бути CMS, наприклад Drupal, односторінкова програма, мобільна програма тощо.

Сервери GraphQL

Сервери GraphQL — це реалізація специфікації GraphQL на стороні сервера. Він відображає ваші дані як GraphQL API, який ваша клієнтська програма може запитувати база даних.

Шлюзи GraphQL

Шлюз — це шаблон мікросервісу, за допомогою якого ви можете створити окремий сервіс для роботи з іншими серверними службами. Він пропонує робочу документацію та зручний спосіб збору даних з кількох джерел за допомогою одного запиту.

Що таке змінна в GraphQL?

A Змінна в GraphQL використовується для відділення динамічних значень від клієнтського запиту та передачі запиту як унікального словника. Змінну в GraphQL також можна використовувати для повторного використання запиту або мутацій, написаних клієнтом з окремими аргументами. У graphQL ви не можете передати динамічні аргументи безпосередньо в рядку запиту. Причина полягає в тому, що клієнтський код повинен динамічно маніпулювати рядком запиту під час запуску програми.

GraphQL має один хороший спосіб факторизації динамічних значень із запиту. Видає їх окремим словником. Ці значення називаються змінними. Щоразу, коли ми працюємо зі змінними, нам потрібно зробити наступні три речі:

  1. Замініть статичне значення в запиті на ім’я змінної.
  2. Оголошіть назву змінної як одну зі змінних, які приймаються запитом GraphQL.
  3. Передайте значення в словнику змінних для транспортного засобу.

Ось як це все разом виглядає:

query HeroNameAndFriends($episode: Episode) {
  hero(episode: $episode) {
    name
    friends {
      name
    }
  }
}
{
  "episode": "JEDI"
}
{
  "data": {
    "hero": {
      "name": "R2-D2",
      "friends": [
        {
          "name": "Luke Skywalker"
        },
        {
          "name": "Han Solo"
        },
        {
          "name": "Leia Organa"
        }
      ]
    }
  }
}

Як ви можете бачити у наведеному вище прикладі GraphQL, ми просто передали іншу змінну, окрім того, щоб створити новий запит.

Що таке мутація?

Мутація — це спосіб змінити набір даних у GraphQL. Він змінює дані в сховищі даних і повертає значення. Мутації допомагають вставляти, оновлювати або видаляти дані. Як правило, мутації визначаються як частина схеми.

Пункти, які слід враховувати під час розробки мутацій GraphQL

Ось важливі моменти при проектуванні GraphQL:

  • Найменування: Перш за все, ви повинні назвати свої мутації дієсловом. Потім іменник або «об’єкт», якщо застосовно. Використовуйте верблюжий регістр, називаючи мутації.
  • Специфічність: Ви повинні зробити якомога більше специфічних для мутацій. Мутації мають представляти семантичні дії, які виконує користувач.
  • Вхідний об'єкт: Використовуйте один унікальний необхідний тип об’єкта введення як аргумент для виконання мутації на клієнті.
  • Унікальний тип корисного навантаження: Ви повинні використовувати унікальний тип корисного навантаження для кожної мутації. Ви також можете додати вихідні дані мутації як поле до конкретного типу корисного навантаження.
  • вкладення: Використовуйте вкладення вашої мутації, де це має сенс. Це дозволяє повністю використовувати GraphQL API.

Різниця між GraphQL і REST

Наступна таблиця показує важливу різницю між GraphQL і REST.

GraphQL REST
Він дотримується архітектури, керованої клієнтом. Він дотримується серверної архітектури.
GraphQL можна організувати за схемою. REST можна організувати в термінах кінцевих точок.
GraphQL — це спільнота, що розвивається. REST — це дуже велика спільнота.
Швидкість розробки в GraphQL висока. Швидкість розробки в REST повільна.
Крива навчання GraphQL складна. Крива навчання REST помірна.
Ідентичність відокремлена від того, як ви її отримуєте. Кінцева точка, яку ви викликаєте в REST, — це ідентифікатор конкретного об’єкта.
У GraphQL сервер визначає доступні ресурси. Форма та розмір ресурсу визначається сервером у REST.
GraphQL забезпечує високу узгодженість на всіх платформах. Важко досягти узгодженості на всіх платформах.

Недоліки GraphQL

Ось недоліки GraphQL:

  • Молода екосистема
  • Брак ресурсів на серверній частині.
  • Відсутній шаблон дизайну для складної програми.
  • Проблеми з продуктивністю складних запитів.
  • Надмір для невеликих програм
  • GraphQL не залежить від методів кешування HTTP, які дозволяють зберігати вміст запиту.
  • GraphQL не розуміє файли. Отже, функція завантаження файлів не включена в нього.
  • Завдяки GraphQL будьте готові до того, що перед розробкою буде багато навчатися, як-от вивчення мови визначення схем.

Програми та інструменти з відкритим кодом, які використовує GraphQL

Нижче наведено важливі програми та інструменти з відкритим кодом, які використовує GraphQL:

  • Гетсбі: Gastby — це програма на основі GraphQL, яка може використовувати дані, отримані з кількох джерел GraphQL API. Ви можете використовувати його для розробки статичної та клієнтської програми React.
  • GraphiQL: Це ідентифікатор, який інтегрується з браузером, а також взаємодіє з API GraphQL. Деякі з функцій, які містить GraphiQL, це мутації, запити даних і запити автозаповнення.
  • Ігровий майданчик GraphQL: Це потужна IDE, яка має вбудований редактор для обробки мутацій, перевірки, запитів GraphQl, підписок тощо. Розробник може використовувати цю IDE для візуалізації структури схеми.
  • Prisma: Prisma — це рівень абстракції бази даних, який перетворює ваші бази даних на API GraphQL за допомогою операцій CRUD (Створення, читання, оновлення та видалення).
  • Біт: Це інструмент і платформа з відкритим кодом, яка перетворює багаторазовий код на компоненти. Розробники можуть використовувати їх для спільного використання та розробки різноманітних проектів.

Підсумки

  • GraphQL — це серверна технологія прикладного рівня, розроблена Facebook для виконання запитів із наявними даними.
  • Ви можете використовувати GraphQL для отримання даних за допомогою одного виклику API.
  • GraphQL допоможе вам покращити продуктивність мобільного додатка.
  • Важливими компонентами запиту GraphQL є: 1) Запит, 2) Резолвер, 3) Схема.
  • GraphQL строго типізований. Це означає, що запити виконуються в контексті певної системи.
  • Клієнт GraphQL — це код, який робить запити POST до відповідного сервера GraphQL.
  • Сервери GraphQL — це реалізація специфікації GraphQL на стороні сервера.
  • Шлюз — це шаблон мікросервісу, за допомогою якого ви можете створити окремий сервіс для роботи з іншими серверними службами.
  • GraphQL має один хороший спосіб факторизації динамічних значень із запиту.
  • Мутація — це спосіб змінити набір даних у GraphQL.
  • Важливими моментами під час розробки GraphQL є: 1) іменування, 2) специфіка, 3) тип унікального корисного навантаження вхідного об’єкта та 4) вкладеність.
  • GraphQL можна організувати в термінах схеми, тоді як REST можна організувати в термінах кінцевих точок.
  • Недоліком GraphQL є відсутність ресурсів на серверній частині.