Углубляемся в GraphQL и ингредиенты, которые делают его отличным

В последней части мы рассмотрели знаменитый вопрос - что такое GraphQL и как он соотносится с REST. Во второй и последней части мы собираемся глубоко погрузиться в детали реализации GraphQL. Что делает GraphQL таким удивительным, так это то, что он довольно прост для понимания, но при этом чрезвычайно мощный. Итак, каковы основы GraphQL? Одна из замечательных особенностей GraphQL - это его простота, которая позволяет относительно легко изучить его. Находясь на земле GraphQL, вам нужно беспокоиться не о многих вещах, но есть несколько основных компонентов, о которых вы должны знать -

Запросы

Запрос, который вы делаете в GraphQL для получения данных, известен как (как вы уже догадались!) Запрос.

query {
   structured data you want from API/DB
}

Начните с запроса некоторых данных, просто используя ключевое слово query, с данными, которые вы хотите запросить, в фигурных скобках. Запросы GraphQL поддерживают вложение, поэтому запросить вложенные данные так же просто, как -

Query {
  person {
    id,
    age,
    name
  }
}

С точки зрения клиента, не нужно указывать GraphQL, откуда брать эти данные или откуда брать эти данные, если ваши данные поступают из нескольких источников.

Мутации

Запросы, описанные выше, предназначены только для чтения. Вам нужны данные из БД, поэтому вы запускаете запрос. Но вам также нужно изменить некоторые данные или создать данные в БД, и что тогда? Что ж, мутации охватывают этот аспект GraphQL. Как следует из названия, любая мутация, которую вы хотите выполнить, выполняется с помощью мутаций GraphQL.

mutation {
  createPerson (id: ID!, name: String!, age: String!) {
    ...fields you expect as response.
  }
}

Резольверы

Что ж, ничего не происходит просто так, кто-то должен углубиться и выполнить некоторую логику, чтобы запросы и мутации GraphQL претворялись в жизнь. Войдите в Resolvers! Используя преобразователи, мы сообщаем GraphQL, какую логику выполнять для выполнения определенного запроса или мутации. Для запроса вы пишете преобразователь, сообщающий GraphQL, как именно получать запрашиваемые данные. Для мутации вы пишете преобразователь, который инструктирует GraphQL, как выполнять эти операции.

Query {
  person: (parent, args) => {
    return Person.find(args.id); /* finds and returns the person with passed id */
  }
}
Mutation {
  createPerson: (parent, args) => {
    return Person.createPerson(args.id, args.name, args.age); /* creates and returns the new person object. */
  }
}

Схема

Итак, последняя, ​​но концепция, которая связывает вышеупомянутые блоки, - это GraphQL Schema. Как и в современных терминах, Schema в GraphQL также представляет точную схему данных. Схема дает нам точное описание данных, которые мы можем запросить или изменить, их соответствующие типы, поскольку GraphQL основан на строго типизированной системе. Схемы информируют GraphQL о структуре и взаимосвязи ваших данных, типах и типах запросов, которые могут быть выполнены с определенными данными. Типичная схема GraphQL состоит из типов данных, объектов, которые есть в вашем хранилище данных, и различных атрибутов.

Например, схема для проиллюстрированных выше запросов и мутаций будет примерно такой:

type Query {
  person: [Person]!
  person(id: ID!): Person
}
type Person {
  id: ID!
  name: String!
  age: String!
}
type Mutation {
  createPerson(age: String!, name: String!): Person!
}

Схема - это первый файл, с которым вам нужно работать перед настройкой GraphQL, поскольку он информирует GraphQL о данных, их типе, отношениях и различных атрибутах к ним.

Довольно просто, не правда ли? Эта присущая GraphQL простота и различные концепции, связанные с ним, являются отличной альтернативой REST API. Надеюсь, эта пара статей помогла вам понять, что такое GraphQL и как он работает. Спасибо за чтение!

Вы можете узнать больше о GraphQL и его строительных блоках на -

Https://www.howtographql.com

или не стесняйтесь проверить официальную документацию -



Отлично проведите время, изучая и используя GraphQL!