Начало работы
Начало работыВведение в GraphQL и Gato GraphQL

Введение в GraphQL и Gato GraphQL

Добро пожаловать в руководства Gato GraphQL. Здесь вы найдёте исчерпывающую информацию об установке, настройке и использовании плагина Gato GraphQL на вашем сайте WordPress.

Что такое GraphQL

GraphQL — это спецификация API, которая позволяет клиентам (например, сайту в браузере или мобильному приложению) точно указывать, какие данные им нужны, а сервер, реализующий API, вернёт именно их.

GraphQL-запрос выглядит так:

query {
  posts {
    id
    title
    content
    author {
      id
      name
    }
  }
}

Ответ сервера представлен в формате JSON и содержит данные в той же структуре, что и запрос. Он выглядит так:

{
  "data": {
    "posts": [
      {
        "id": 1,
        "title": "Hello world",
        "content": "<p>How are you doing?</p>",
        "author": {
          "id": 1,
          "name": "Leo"
        }
      },
      {
        "id": 2,
        "title": "Scheduled post",
        "content": "<p>This post is scheduled to be published in the future.</p>",
        "author": {
          "id": 2,
          "name": "Markus"
        }
      },
      {
        "id": 3,
        "title": "Lorem ipsum",
        "content": "<p>Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua.</p>",
        "author": {
          "id": 3,
          "name": "Socrates"
        }
      }
    ]
  }
}

GraphQL-серверы также могут «мутировать» (то есть создавать и обновлять) данные. В этом случае ключевое слово операции query необходимо заменить на mutation:

mutation {
  createPost(input: {
    title: "New post",
    contentAs: { html: "Lorem ipsum dolor sit amet" }
  }) {
    id
    status
  }
}

Посетите официальный сайт GraphQL на graphql.org.

Что такое Gato GraphQL

Gato GraphQL — это плагин для WordPress, который превращает сайт в GraphQL-сервер, позволяя получать и изменять данные WordPress-сайта с помощью языка GraphQL.

Gato GraphQL стремится быть:

Простым в использовании

Философия WordPress состоит в том, что любой человек — независимо от наличия технических навыков — должен уметь пользоваться программным обеспечением. Плагин следует этой философии, делая создание API и работу с ним максимально доступными.

Например, Gato GraphQL позволяет публиковать persisted queries (это endpoint'ы, открывающие доступ к заранее определённым данным, аналогично REST endpoint'ам) с помощью пользовательского интерфейса редактора WordPress; подобно написанию записи, это доступно каждому.

Быстрым

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

Gato GraphQL использует иной подход: для выполнения GraphQL-запроса применяется структура компонентной модели (вместо графа), при которой процесс растёт линейно в зависимости от глубины запроса (а не экспоненциально).

Кроме того, компилируются, валидируются и выполняются только те элементы схемы, которые запрошены в GraphQL-запросе, а не вся GraphQL-схема целиком. В результате, установлено ли на вашем WordPress-сайте 3 или 30 Custom Post Types, время выполнения запроса остаётся одинаковым.

Мощным

API служат главным шлюзом для взаимодействия клиента с сервером; важно, чтобы API не имел никаких ограничений и мог удовлетворить любые требования.

Этот плагин позволяет изменять результаты выполнения запроса с помощью пользовательской функциональности, внешних API и облачных сервисов. Полученные данные можно перебирать и обрабатывать по мере необходимости, а вывод запроса можно изменять любым желаемым способом — так что практически нет ничего, что нельзя было бы сделать.

Безопасным

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

Этот плагин уделяет безопасности первостепенное внимание и реализовал несколько встроенных мер защиты. Единый endpoint можно отключить; данные можно открывать через persisted queries; предоставление доступа к данным осуществляется с помощью настраиваемых списков контроля доступа (на основе того, авторизован ли пользователь, имеет ли он определённую роль или права, или на основе пользовательского правила); и API можно определить как публичный или приватный.

Ориентированным на будущее

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

Этот плагин не любит ждать; он уже включает многие предложенные новые возможности (такие как namespacing схемы, выполнение multiple queries и другие) в качестве opt-in функций, которые администратор должен явно включить.