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.