GraphQL — это язык запросов для вашего API, разработанный Facebook. Он предоставляет клиентам гибкий и эффективный способ запрашивать определенные данные с сервера, а серверы — предоставлять эти данные клиентам. В этой статье мы рассмотрим основы GraphQL и как начать использовать его в своих проектах.
Что такое GraphQL?

GraphQL — это язык запросов, который позволяет клиентам гибко и эффективно запрашивать определенные данные с сервера. Он был разработан как альтернатива REST API, которые являются традиционным способом создания API.

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

Еще одно отличие состоит в том, что GraphQL позволяет клиенту запрашивать данные из нескольких ресурсов в одном запросе, тогда как в REST API клиенту нужно будет сделать несколько запросов к нескольким конечным точкам для получения одних и тех же данных.

Настройка сервера GraphQL

Чтобы начать работу с GraphQL, вам необходимо настроить сервер GraphQL, который может обрабатывать запросы от клиентов. Есть много способов сделать это, но наиболее распространенным является использование серверной библиотеки GraphQL, такой как Apollo Server или GraphQL-йога.

Чтобы настроить сервер GraphQL с помощью Apollo Server, вам необходимо установить библиотеку с помощью npm:

npm install apollo-server

Затем вам нужно будет создать новый экземпляр сервера Apollo и передать ему схему и набор распознавателей:

const { ApolloServer } = require('apollo-server');

const typeDefs = `
  type Query {
    hello: String
  }
`;

const resolvers = {
  Query: {
    hello: () => 'Hello, world!',
  },
};

const server = new ApolloServer({ typeDefs, resolvers });

server.listen().then(({ url }) => {
  console.log(`Server ready at ${url}`);
});

Схема — это строка, определяющая типы и поля, доступные в GraphQL API, а преобразователи — это функции, которые разрешают данные для этих полей. В этом примере мы определили один тип запроса с полем приветствия и функцию разрешения, которая возвращает строку «Привет, мир!».

Чтобы запустить сервер, мы вызываем метод listen и передаем ему номер порта. Затем сервер начнет прослушивать запросы GraphQL на этом порту.

Выполнение запросов GraphQL

Теперь, когда у нас настроен сервер GraphQL, давайте посмотрим, как выполнять запросы GraphQL. Существует несколько различных способов выполнения запросов GraphQL, но наиболее распространенным способом является использование клиентской библиотеки GraphQL, такой как Apollo Client или Relay.

Чтобы сделать запрос GraphQL с помощью Apollo Client, вам необходимо установить библиотеку с помощью npm:

npm install apollo-client

Затем вы можете создать новый экземпляр клиента Apollo и использовать его для выполнения запроса GraphQL:

const { ApolloClient } = require('apollo-client');

const client = new ApolloClient({
  uri: 'http://localhost:4000/graphql'
});

client.query({
query: query { hello } }).then(result => console.log(result));

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

После завершения запроса будет вызван метод then с результатом запроса. Результат будет содержать поле данных, содержащее данные, возвращенные сервером, а также поле ошибок, содержащее любые ошибки, возникшие во время запроса.

Заключение

В этой статье мы рассмотрели основы GraphQL и то, как начать использовать его в своих проектах. Мы рассмотрели, как настроить сервер GraphQL и как выполнять запросы GraphQL с помощью клиентской библиотеки.

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