Учебное пособие по 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 основано на экспресс и NodeJs. Таким образом, вы можете очень легко изучить GraphQL, имея базовое понимание NodeJS.
Ключевые компоненты GraphQL
Теперь в этом руководстве по GraphQL давайте изучим ключевые компоненты GraphQL:
Как показано на рисунке выше, существует три ключевых компонента GraphQL: 1) запрос, 2) преобразователь и 3) схема.
запрос
Запрос — это запрос API, сделанный приложением клиентского компьютера. Он поддерживает дополнения и указывает на массивы. Запрос используется для чтения или получения значений.
Части запроса:
Ниже приведены важные части запроса.
- поле:
Поле просто указывает, что мы запрашиваем у сервера конкретную информацию. Ниже приведен пример поля GraphQL в запросе GraphQL.
query { team { id name } } "data": { "team":[ { "id": 1, "name": "Avengers" } , … ] } }
В приведенном выше примере GraphQL мы запрашиваем у сервера поле Team и его подполя, такие как id и name. Сервер GraphQL возвращает запрошенные нами данные.
- аргументы
In ОТДЫХмы можем передать только один набор аргументов в виде сегментов 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. Вы можете напрямую запросить API GraphQL, но лучше всего использовать выделенную клиентскую библиотеку с помощью Relay.
Эти JavaБиблиотека скриптов разработана Facebook для создания приложений React с помощью GraphQL. Клиентами GraphQL могут быть CMS, такие как Drupal, одностраничные приложения, мобильные приложения и т. д.
GraphQL-серверы
Серверы GraphQL — это реализация спецификации GraphQL на стороне сервера. Он отображает ваши данные в виде GraphQL API, который ваша клиентская программа может запросить. база данных.
GraphQL-шлюзы
Шлюз — это шаблон микросервиса, в котором вы можете создать отдельный сервис, который будет работать с другими серверными сервисами. Он предлагает работоспособную документацию и удобный способ сбора данных из нескольких источников с помощью одного запроса.
Что такое переменная в GraphQL?
A Переменная в GraphQL используется для отделения динамических значений от клиентского запроса и передачи запроса как уникального словаря. Переменная в GraphQL также может использоваться для повторного использования запроса или мутаций, написанных клиентом, с отдельными аргументами. В GraphQL вы не можете передавать динамические аргументы непосредственно в строке запроса. Причина в том, что клиентскому коду необходимо динамически манипулировать строкой запроса во время запуска программы.
В GraphQL есть один хороший способ факторизации динамических значений запроса. Он передает их как отдельный словарь. Эти значения известны как переменные. Всякий раз, когда мы работаем с переменными, нам нужно сделать следующие три вещи:
- Замените статическое значение в запросе именем переменной.
- Объявите имя переменной как одну из переменных, принимаемых запросом GraphQL.
- Передайте значение в словаре переменных, специфичном для транспорта.
Вот как это выглядит все вместе:
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:
- Нейминг: Прежде всего, вам нужно назвать глагол мутации. Затем существительное или «объект», если применимо. Используйте CamelCase при именовании мутаций.
- Специфичность: Вы должны сделать мутацию максимально специфичной. Мутации должны представлять семантические действия, предпринимаемые пользователем.
- Входной объект: Используйте один уникальный обязательный тип входного объекта в качестве аргумента для выполнения мутации на клиенте.
- Уникальный тип полезной нагрузки: Вы должны использовать уникальный тип полезных данных для каждой мутации. Вы также можете добавить выходные данные мутации в виде поля для этого конкретного типа полезных данных.
- Вложенность: Используйте вложение в свою мутацию везде, где это имеет смысл. Это позволяет вам полностью использовать GraphQL API.
Разница между GraphQL и REST
В следующей таблице показаны важные различия между GraphQL и REST.
GraphQL | ОТДЫХ |
---|---|
Он следует архитектуре, управляемой клиентом. | Он соответствует архитектуре, управляемой сервером. |
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.
- ГрафиQL: Это идентификатор, который интегрируется с браузером, а также взаимодействует с 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 является отсутствие ресурсов на серверной части.