Введение в 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 функций, которые администратор должен явно включить.