Руководство для начинающих по GraphQL: схемы, запросы, мутации и преобразователи

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

Что такое GraphQL?

GraphQL — это язык запросов с открытым исходным кодом и среда выполнения для API (интерфейсов прикладного программирования). Он был разработан Facebook в 2012 году, а в 2015 году был открыт с открытым исходным кодом. GraphQL предоставляет гибкий и эффективный способ запроса и управления данными из API.

Схемы: определение формы данных

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

Вот пример простой схемы GraphQL:

type User {
  id: ID!
  name: String!
  age: Int!
}
type Query {
  getUser(id: ID!): User
}

В этом примере мы определяем тип Userс такими полями, как id, nameи age.. Мы также определяем тип Queryс полем getUser, которое принимает параметр idи возвращает объект User.

Запросы: получение данных

После того как у нас есть схема, мы можем начать запрашивать данные. В GraphQL запросы используются для получения данных с сервера. Мы указываем поля, которые хотим получить, и GraphQL возвращает ответ JSON с запрошенными данными.

Вот пример запроса GraphQL:

query {
  getUser(id: "123") {
    name
    age
  }
}

В этом запросе мы запрашиваем поля nameи ageпользователя с идентификатором «123». Сервер обработает запрос и вернет такой ответ:

{
  "data": {
    "getUser": {
      "name": "John Doe",
      "age": 25
    }
  }
}

Мутации: изменение данных

Помимо получения данных GraphQL также поддерживает мутации, которые используются для изменения данных на сервере. Мутации позволяют нам создавать, обновлять или удалять данные.

Вот пример мутации GraphQL:

mutation {
  createUser(name: "Alice", age: 30) {
    id
    name
    age
  }
}

В этой мутации мы создаем нового пользователя с именем «Алиса» и возрастом 30 лет. Сервер обработает мутацию и вернет такой ответ:

{
  "data": {
    "createUser": {
      "id": "456",
      "name": "Alice",
      "age": 30
    }
  }
}

Резолверы: реализация логики запросов и мутаций

Резолверы — это функции, которые определяют, как получать или изменять данные для каждого поля в схеме GraphQL. Они действуют как мост между схемой и источниками данных.

Вот пример преобразователя для запроса getUser:

const resolvers = {
  Query: {
    getUser: (parent, args) => {
      // Logic to fetch user from database or any other data source
      const user = getUserById(args.id);
      return user;
    },
  },
};

В этом примере мы определяем функцию разрешения для поля getUserтипа Query. Резолвер получает parent(содержащий результат предыдущего резолвера, если таковой имеется) и args(содержащий аргументы, переданные в запросе). Затем преобразователь извлекает пользователя из источника данных и возвращает его.

Заключение

Поздравляем! Теперь у вас есть четкое представление об основных концепциях GraphQL. Мы рассмотрели схемы, запросы, мутации и преобразователи, которые являются строительными блоками любого API GraphQL. Помните, что GraphQL – это мощный инструмент для создания эффективных и гибких API, и его стоит изучить дальше.

Итак, приступайте к созданию собственных API-интерфейсов GraphQL и раскройте весь потенциал получения и манипулирования данными!