Primeiros passos
Primeiros passosIntrodução ao GraphQL e ao Gato GraphQL

Introdução ao GraphQL e ao Gato GraphQL

Bem-vindo aos guias do Gato GraphQL. Aqui você encontrará muitas informações sobre como instalar, configurar e usar o plugin Gato GraphQL no seu site WordPress.

O que é GraphQL

GraphQL é uma especificação de API que permite aos clientes (como um site no navegador ou um aplicativo mobile) especificarem exatamente quais dados precisam, e o servidor que implementa a API irá recuperar exatamente esses dados.

Uma query GraphQL tem esta aparência:

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

A resposta do servidor está no formato JSON, contendo os dados na mesma estrutura da query. Ela tem esta aparência:

{
  "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"
        }
      }
    ]
  }
}

Servidores GraphQL também podem "mutar" (ou seja, criar e atualizar) dados. Nesse caso, a palavra-chave de operação query deve ser substituída por mutation:

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

Confira o site oficial do GraphQL em graphql.org.

O que é Gato GraphQL

Gato GraphQL é um plugin para WordPress que transforma o site em um servidor GraphQL, permitindo que você busque e modifique dados do site WordPress usando a linguagem GraphQL.

O Gato GraphQL se esforça para ser:

Fácil de usar

A filosofia do WordPress é que qualquer pessoa, independentemente de ter ou não habilidades técnicas, deve conseguir usar o software. O plugin busca satisfazer essa filosofia, tornando o mais simples possível criar uma API e interagir com ela.

Como exemplo, o Gato GraphQL permite publicar queries persistidas (que são endpoints que expõem dados predefinidos, semelhantes aos endpoints REST) usando a interface fornecida pelo editor do WordPress; assim como escrever um post, é acessível a todos.

Rápido

Resolver uma query GraphQL normalmente exige iterar um grafo contendo os dados de todas as entidades consultadas. Quanto mais nós no grafo e maior a sua profundidade, mais lento será o processo de conclusão (podendo ser até exponencialmente mais lento).

O Gato GraphQL adota uma abordagem diferente: utiliza uma estrutura de modelo de componentes para resolver a query GraphQL (em vez de um grafo), envolvendo um processo que cresce linearmente com a profundidade da query (não exponencialmente).

Além disso, apenas os elementos do schema solicitados na query GraphQL são compilados, validados e executados, e não o schema GraphQL inteiro. Como resultado, seja seu site WordPress com 3 ou 30 Custom Post Types instalados, o tempo de resolução da query será o mesmo.

Poderoso

As APIs atuam como o principal gateway para o cliente interagir com o servidor; é importante que uma API não seja limitada em nenhum aspecto, de modo a conseguir atender qualquer requisito.

Este plugin permite modificar os resultados da execução de uma query, por meio de funcionalidades personalizadas, APIs externas e serviços baseados em nuvem. Os dados consultados podem ser iterados e manipulados conforme necessário, e o output da query pode igualmente ser alterado de qualquer forma desejada, de modo que praticamente nada é impossível de ser feito.

Seguro

Uma API GraphQL pode ser facilmente mal gerenciada, expondo o acesso a todos os dados do site WordPress a qualquer pessoa, incluindo agentes maliciosos; o servidor GraphQL precisa fornecer medidas de segurança adequadas para garantir que apenas os usuários pretendidos acessem os dados.

Este plugin leva a segurança muito a sério e implementou diversas medidas de segurança nativamente. O endpoint único pode ser desativado; os dados podem ser expostos por meio de queries persistidas; a concessão de acesso aos dados é feita por listas de controle de acesso configuráveis (baseadas no fato de o usuário estar ou não logado, ter determinada função ou capacidade, ou uma regra personalizada); e a API pode ser definida como pública ou privada.

Voltado para o futuro

GraphQL é um padrão que continua evoluindo, e a comunidade continua sugerindo ideias para fornecer novas funcionalidades, a serem adicionadas à especificação futuramente.

Este plugin não gosta de esperar; ele já inclui muitas das novas funcionalidades que foram propostas (como namespacing de schema, execução de múltiplas queries e outras) como recursos opt-in, que devem ser habilitados explicitamente pelo administrador.