GraphQL con Drupal 8: la guía de todo lo que necesita saber (¡con ejemplos!)

Publicado: 2019-12-17

GraphQL habla con Drupal en HTTP y las salidas están más estructuradas que nunca.

Hoy en día, las excelentes experiencias de los clientes comienzan con un excelente contenido. Contenido que está disponible en todas partes. Con la primera iniciativa de API de Drupal 8, el contenido administrado por Drupal puede ser utilizado fácilmente por otros sistemas a través de HTTP. REST (Representational State Transfer) proporciona un estándar de diseño para API. Sin embargo, con las aplicaciones cliente cada vez más complejas y desafiantes, los desarrolladores necesitan una solución más moderna y efectiva.

GraphQL con drupal8



GraphQL nació de la demanda de una interacción cliente-servidor más flexible y potente. Es un lenguaje de consulta sofisticado y una máquina de ejecución. En 2012, Facebook creó la especificación para él, que describe sus capacidades y los requisitos de los modelos de datos para aplicaciones sin cabeza.

¿Qué es GraphQL?

GraphQL es un estándar adaptable para API y proporciona un tiempo de ejecución para cumplir con esas consultas. GraphQL brinda detalles completos y razonables de la información en su API. Está desarrollado con una ideología de "Pide lo que necesitas y obtén exactamente eso". Le permite al cliente buscar la respuesta exacta que necesita de la API, nada más, nada menos.

Ventajas de GraphQL

Algunas de las muchas ventajas de usar GraphQL para Drupal:

  1. Desarrollo de frontend más rápido

    Enfatice rápidamente las aplicaciones sin esperar nuevos endpoints de backend. Mejore la obtención de datos y el mantenimiento del código al obtener los datos en la forma que necesita.
  2. Pide lo que necesitas y obtén exactamente eso

    Proporciona la respuesta exacta que solicitó el cliente. Siempre devuelve un resultado predecible. Las aplicaciones que usan GraphQL también son estables porque la aplicación controla los datos que obtiene, no el servidor.
  3. Utilice sus datos existentes

    GraphQL se puede utilizar con cualquier infraestructura existente, por ejemplo, REST, SOAP o una base de datos existente, o cualquier otra cosa. Le permite consultar todos los datos en una sola solicitud y le brinda una respuesta limpia y predecible.
  4. Menos bytes y viajes de ida y vuelta

    Usando GraphQL, todos los datos requeridos se pueden recuperar usando una sola consulta. Hace que el
    aplicación más rápido.
drupal-graphql

GraphQL con Drupal 8

REST vs JSON: API vs GraphQL

Si comparamos estos tres de acuerdo con la eficiencia de la solicitud, JSON: API y GraphQL son excelentes. Porque en una sola solicitud JSON: API y GraphQl pueden entregar todas las respuestas requeridas. En el caso de JSON: API, a veces tenemos que adaptar la respuesta, pero cuando se trata de GraphQL, solo sirve para lo que necesitamos. REST es más lento en comparación con estos, porque se necesitan múltiples solicitudes para satisfacer las necesidades comunes.

En términos de simplicidad operativa e implementación, REST es el más fácil, ha estado ahí durante bastante tiempo. JSON: API también funciona de fábrica con CDN y proxies inversos. Para GraphQL, se necesita una infraestructura adicional y las bibliotecas de cliente son necesarias para implementarla.

Es más fácil usar la caché web en REST y JSON: API en comparación con GraphQL. En GraphQL, solo hay un punto final (la mayoría de las veces un punto final HTTP POST) donde se envían todas las consultas. Dado que cada consulta puede ser diferente, es más difícil utilizar este tipo de almacenamiento en caché.

La especificación Drupal GraphQL admite operaciones masivas / por lotes automáticamente para las mutaciones que ya ha implementado, mientras que la especificación JSON: API no lo hace. La capacidad de realizar operaciones de escritura por lotes puede ser importante.

Instalación de GraphQL para Drupal 8

El módulo Drupal GraphQL es compatible con todas las especificaciones GraphQL y se puede utilizar para crear y exponer esquemas GraphQL. La última versión alfa del módulo Drupal 8 en la versión 8.x-4 ofrece una capacidad para que los módulos Drupal extiendan el esquema con un complemento.

Aquí es donde puede instalar el módulo Drupal GraphQL desde: https://www.drupal.org/project/graphql
Puede instalar usando el comando composer.

 el compositor requiere 'drupal / graphql: ^ 3.0'

Le proporcionará dos módulos GraphQL Core y GraphQL . Debe habilitar ambos módulos. Puedes habilitarlo usando drush eg

 drush en graphql
drush en graphql_core

Consultas con Drupal GraphQL

El módulo Drupal GraphQL proporciona una herramienta llamada GraphiQL . Es una herramienta poderosa y tiene una interfaz de usuario interactiva con funcionalidades como la finalización automática. Con esta herramienta, puede ejecutar consultas y obtener resultados. Navegue a - " / graphql / explorer " para la interfaz.

Obtendrá una interfaz de usuario que se ve así:

GraphQL-UI

Interfaz de usuario GraphiQL

En el panel del lado izquierdo de esta interfaz de usuario puede escribir una consulta y en el lado derecho, verá los resultados como una salida en formato JSON. Al hacer clic en Documentos en la esquina superior derecha, obtendrá la documentación de las consultas disponibles. La sección Variable de consulta en el panel inferior izquierdo se puede usar para pasar variables de consulta.

Ejemplos de

Nodos de consulta

Quering-nodos-graphql

Drupal GraphQL - Nodos de consulta

2. Consulta de taxonomías

Drupal GraphQL - Consulta de taxonomías

Drupal GraphQL - Consulta de taxonomías


3. Consultar rutas

Drupal GraphQL - Rutas de consulta

Drupal GraphQL - Rutas 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 con conjunción

Drupal GraphQL - Filtros con conjunción

Drupal GraphQL - Filtros con conjunción

Otros operadores disponibles son:

  • IGUAL
  • NO ES IGUAL
  • MENOR QUE
  • PEQUEÑO_THAN_OR_EQUAL
  • MAS GRANDE QUE
  • MAYOR QUE O IGUAL
  • EN
  • NO EN
  • ME GUSTA
  • NO COMO
  • ENTRE
  • NO ENTRE
  • ES NULO
  • NO ES NULO

Las conjunciones pueden tener dos valores

  • Y
  • O

También puede utilizar Grupos para escribir consultas más complejas.

7.variables GraphQL

Drupal GraphQL - Variables

Drupal GraphQL - Variables

Mutaciones

En GraphQL, una mutación es la terminología utilizada cada vez que desea agregar, modificar o eliminar datos almacenados en el servidor. En este caso, Drupal. Desafortunadamente, el módulo no incluye una forma de realizar mutaciones comunes listas para usar debido a algunos requisitos técnicos de GraphQL.
Puede encontrar un código de ejemplo para crear, eliminar, actualizar y cargar archivos aquí: https://github.com/drupal-graphql/graphql-examples

Ejemplo de mutación:

Drupal GraphQL - Ejemplo de mutación

Drupal GraphQL - Ejemplo de mutación

Drupal GraphQL con Twig

El uso de Drupal GraphQL con Twig puede mejorar significativamente el rendimiento de su sitio web. He aquí cómo: cuando inyecta datos en la plantilla Twig, puede obtener todos los datos necesarios con una sola llamada a la API. Además, debido a que el cliente controla los datos que obtiene y no el servidor, hace que el proceso sea aún más rápido.

Para usar Drupal GraphQL con Twig necesitamos el módulo GraphQL Twig. Para descargarlo y habilitarlo, use los siguientes comandos:

 el compositor requiere 'drupal / graphql_twig: ^ 1.0'
drush en graphql_twig

Y luego puede usar la consulta GraphQL en su sitio web, por ejemplo

 {#graphql
consulta {
  admin: userById (id: "1") {
    uid
    nombre
  }
  usuario: currentUserContext {
    uid
  }
}
#}

Obtendrá los datos de respuesta en la variable GraphQL.