GraphQL com Drupal 8: o guia de tudo que você precisa saber (com exemplos!)

Publicados: 2019-12-17

O GraphQL se comunica com o Drupal em HTTP e as saídas são mais estruturadas do que nunca!

Hoje, as grandes experiências do cliente começam com um ótimo conteúdo. Conteúdo disponibilizado em qualquer lugar. Com a iniciativa API-first do Drupal 8, o conteúdo gerenciado pelo Drupal pode ser prontamente usado por outros sistemas em HTTP. REST (Representational State Transfer) fornece um padrão de design para APIs. No entanto, com os aplicativos cliente cada vez mais complexos e desafiadores, os desenvolvedores precisam de uma solução mais moderna e eficaz.

GraphQL com drupal8



O GraphQL nasceu da demanda por uma interação cliente-servidor mais flexível e poderosa. É uma linguagem de consulta sofisticada e uma máquina de execução. Em 2012, o Facebook criou a especificação para ele, que descreve seus recursos e os requisitos de modelos de dados para aplicativos sem periféricos.

O que é GraphQL?

GraphQL é um padrão adaptável para APIs e fornece um tempo de execução para atender a essas consultas. GraphQL fornece detalhes completos e razoáveis ​​das informações em sua API. É desenvolvido com a ideologia de "Peça o que você precisa e consiga exatamente isso". Ele capacita o cliente a buscar a resposta exata de que precisa na API, nada mais - nada menos.

Vantagens do GraphQL

Algumas das muitas vantagens de usar GraphQL para Drupal -

  1. Desenvolvimento de front-end mais rápido

    Enfatize rapidamente os aplicativos sem esperar por novos endpoints de back-end. Melhore a busca de dados e a manutenção do código, obtendo os dados na forma que você precisa.
  2. Peça o que você precisa e obtenha exatamente isso

    Ele fornece a resposta exata que o cliente solicitou. Ele sempre retorna resultados previsíveis. Os aplicativos que usam GraphQL também são estáveis ​​porque o aplicativo controla os dados que obtém, não o servidor.
  3. Use seus dados existentes

    GraphQL pode ser usado com qualquer infraestrutura existente, por exemplo, REST, SOAP ou banco de dados existente, ou qualquer outra coisa. Ele permite que você consulte todos os dados em uma única solicitação e fornece uma resposta previsível limpa.
  4. Menos bytes e viagens de ida e volta

    Usando GraphQL, todos os dados necessários podem ser obtidos usando uma única consulta. Faz o
    aplicação mais rápida.
drupal-graphql

GraphQL com Drupal 8

REST vs JSON: API vs GraphQL

Se compararmos esses três de acordo com a eficiência da solicitação, JSON: API e GraphQL são excelentes. Porque em uma única solicitação JSON: API e GraphQl podem servir todas as respostas necessárias. No caso de JSON: API, às vezes temos que adaptar a resposta, mas quando se trata de GraphQL, ele serve apenas o que precisamos. O REST é mais lento em comparação com esses, porque várias solicitações são necessárias para atender às necessidades comuns.

Em termos de simplicidade operacional e implementação, REST é o mais fácil, já existe há um bom tempo. JSON: API também funciona com CDN e proxies reversos. Para GraphQL, uma infraestrutura extra é necessária e bibliotecas de cliente são necessárias para implementá-la.

É mais fácil usar o cache da web em REST e JSON: API em comparação com GraphQL. No GraphQL, há apenas um ponto de extremidade (na maioria das vezes, um ponto de extremidade HTTP POST) para onde todas as consultas são enviadas. Como cada consulta pode ser diferente, é mais difícil usar esse tipo de cache.

A especificação Drupal GraphQL suporta operações em massa / lote automaticamente para as mutações que você já implementou, enquanto a especificação JSON: API não. A capacidade de realizar operações de gravação em lote pode ser importante.

Instalando GraphQL para Drupal 8

O módulo Drupal GraphQL suporta todas as especificações GraphQL e pode ser usado para construir e expor esquemas GraphQL. A versão alfa mais recente do módulo Drupal 8 na versão 8.x-4 oferece a capacidade dos módulos Drupal de estender o esquema com um plug-in.

Aqui é onde você pode instalar o módulo Drupal GraphQL - https://www.drupal.org/project/graphql
Você pode instalar usando o comando composer.

 composer requer 'drupal / graphql: ^ 3.0'

Ele fornecerá dois módulos GraphQL Core e GraphQL . Você precisa habilitar os dois módulos. Você pode habilitá-lo usando drush, por exemplo

 drush en graphql
drush en graphql_core

Consultas com Drupal GraphQL

O módulo Drupal GraphQL fornece uma ferramenta chamada GraphiQL . É uma ferramenta poderosa e possui uma IU interativa com funcionalidades como preenchimento automático. Usando esta ferramenta, você pode executar consultas e obter resultados. Navegue até - “ / graphql / explorer ” para a interface.

Você obterá uma IU semelhante a esta -

GraphQL-UI

GraphiQL UI

No painel esquerdo desta IU, você pode escrever uma consulta e, no lado direito, verá os resultados como uma saída no formato JSON. Clicar em Docs no canto superior direito, irá obter a documentação das consultas disponíveis. A seção Variável de consulta no painel esquerdo inferior pode ser usada para passar variáveis ​​de consulta.

Exemplos

1. Consultando nós

Quering-nodes-graphql

Drupal GraphQL - Nós de consulta

2. Consultando Taxonomias

Drupal GraphQL - Consultando Taxonomias

Drupal GraphQL - Consultando Taxonomias


3. Consultando Rotas

Drupal GraphQL - Rotas de consulta

Drupal GraphQL - Rotas de consulta

4. Fragmentos de consulta

Drupal GraphQL - Fragmentos de consulta

Drupal GraphQL - Fragmentos de consulta

5. Filtros

Drupal GraphQL - Filtros

Drupal GraphQL - Filtros

6. Filtros com conjunção

Drupal GraphQL - Filtros com Conjunção

Drupal GraphQL - Filtros com Conjunção

Outros operadores disponíveis são:

  • IGUAL
  • NÃO IGUAL
  • MENOR QUE
  • SMALLER_THAN_OR_EQUAL
  • MAIOR QUE
  • GREATER_THAN_OR_EQUAL
  • DENTRO
  • NÃO EM
  • COMO
  • NÃO PARECE
  • ENTRE
  • NÃO ENTRE
  • É NULO
  • NÃO É NULO

As conjunções podem ter dois valores

  • E
  • OU

Você também pode usar Grupos para escrever consultas mais complexas.

7. Variáveis ​​GraphQL

Drupal GraphQL - Variáveis

Drupal GraphQL - Variáveis

Mutações

No GraphQL, uma mutação é a terminologia usada sempre que você deseja adicionar, modificar ou excluir dados armazenados no servidor. Nesse caso, Drupal. Infelizmente, o módulo não inclui uma maneira de realizar mutações comuns prontas para usar, devido a alguns requisitos técnicos do GraphQL.
Código de exemplo para criar, excluir, atualizar e uploads de arquivo pode ser encontrado aqui: https://github.com/drupal-graphql/graphql-examples

Exemplo de mutação:

Drupal GraphQL - exemplo de mutação

Drupal GraphQL - exemplo de mutação

Drupal GraphQL com Twig

Usar o Drupal GraphQL com Twig pode melhorar significativamente o desempenho do seu site. Veja como - Ao injetar dados no modelo Twig, você pode buscar todos os dados necessários usando uma única chamada de API. Além disso, como o cliente controla os dados que obtém e não o servidor, torna o processo ainda mais rápido.

Para usar o Drupal GraphQL com Twig, precisamos do módulo GraphQL Twig. Para fazer o download e habilitá-lo, use os seguintes comandos:

 composer requer 'drupal / graphql_twig: ^ 1.0'
drush en graphql_twig

E então você pode usar a consulta GraphQL em seu site, por exemplo

 {#graphql
inquerir {
  admin: userById (id: "1") {
    uid
    nome
  }
  usuário: currentUserContext {
    uid
  }
}
#}

Você obterá os dados de resposta na variável GraphQL.