GraphQL avec Drupal 8 : Le guide tout ce que vous devez savoir (avec des exemples !)
Publié: 2019-12-17GraphQL communique avec Drupal en HTTP et les sorties sont plus structurées que jamais !
Aujourd'hui, les bonnes expériences client commencent par un excellent contenu. Un contenu disponible partout. Avec l'initiative API-first de Drupal 8, le contenu géré par Drupal peut être facilement utilisé par d'autres systèmes via HTTP. REST (Representational State Transfer) fournit une norme de conception pour les API. Cependant, les applications client devenant de plus en plus complexes et exigeantes, les développeurs ont besoin d'une solution plus moderne et plus efficace.

GraphQL est né de la demande d'une interaction client-serveur plus flexible et plus puissante. C'est un langage de requête sophistiqué et une machine d'exécution. En 2012, Facebook a créé la spécification pour cela, qui décrit ses capacités et les exigences des modèles de données pour les applications sans tête.
Qu'est-ce que GraphQL ?
GraphQL est une norme adaptative pour les API et fournit un environnement d'exécution pour répondre à ces requêtes. GraphQL donne des détails complets et raisonnables sur les informations de votre API. Il est développé avec une idéologie de "Demandez ce dont vous avez besoin et obtenez exactement cela". Il permet au client d'obtenir la réponse exacte dont il a besoin à partir de l'API, rien de plus - rien de moins.
Avantages de GraphQL
Quelques-uns des nombreux avantages d'utiliser GraphQL pour Drupal -
- Développement front-end plus rapide
Mettez rapidement l'accent sur les applications sans attendre de nouveaux points de terminaison principaux. Améliorez la récupération des données et la maintenance du code en obtenant les données sous la forme dont vous avez besoin. - Demandez ce dont vous avez besoin et obtenez exactement cela
Il fournit la réponse exacte demandée par le client. Il renvoie toujours un résultat prévisible. Les applications utilisant GraphQL sont également stables car l'application contrôle les données qu'elle obtient, pas le serveur. - Utilisez vos données existantes
GraphQL peut être utilisé avec n'importe quelle infrastructure existante, par exemple REST, SOAP ou une base de données existante, ou toute autre chose. Il vous permet d'interroger toutes les données en une seule requête et vous fournit une réponse prévisible et épurée. - Moins d'octets et d'allers-retours
En utilisant GraphQL, toutes les données requises peuvent être récupérées à l'aide d'une seule requête. Cela fait le
demande plus rapidement.

GraphQL avec Drupal 8
REST contre JSON : API contre GraphQL
Si nous comparons ces trois éléments en fonction de l'efficacité de la demande, JSON:API et GraphQL sont excellents. Parce que dans une seule requête JSON:API et GraphQl peuvent servir toutes les réponses requises. Dans le cas de JSON:API, nous devons parfois adapter la réponse, mais lorsqu'il s'agit de GraphQL, il ne sert que ce dont nous avons besoin. REST est plus lent que ceux-ci, car plusieurs requêtes sont nécessaires pour répondre aux besoins communs.
En termes de simplicité opérationnelle et de mise en œuvre, REST est le plus simple, il est là depuis un bon bout de temps maintenant. JSON:API fonctionne également directement avec le CDN et les proxys inversés. Pour GraphQL, une infrastructure supplémentaire est nécessaire et des bibliothèques clientes sont nécessaires pour l'implémenter.
Il est plus facile d'utiliser le cache Web dans REST et JSON:API par rapport à GraphQL. Dans GraphQL, il n'y a qu'un seul point de terminaison (la plupart du temps un point de terminaison HTTP POST) où toutes les requêtes sont envoyées. Comme chaque requête peut être différente, il est plus difficile d'utiliser ce type de mise en cache.
La spécification Drupal GraphQL prend en charge les opérations en masse/par lots automatiquement pour les mutations que vous avez déjà implémentées, contrairement à la spécification JSON:API. La possibilité d'effectuer des opérations d'écriture par lots peut être importante.
Installation de GraphQL pour Drupal 8
Le module Drupal GraphQL prend en charge toutes les spécifications GraphQL et peut être utilisé pour créer et exposer des schémas GraphQL. La dernière version alpha du module Drupal 8 dans la version 8.x-4 offre aux modules Drupal la possibilité d'étendre le schéma avec un plugin.
Voici où vous pouvez installer le module Drupal GraphQL à partir de - https://www.drupal.org/project/graphql
Vous pouvez installer à l'aide de la commande composer.
le compositeur requiert 'drupal/graphql:^3.0'
Il vous fournira deux modules GraphQL Core et GraphQL . Vous devez activer les deux modules. Vous pouvez l'activer en utilisant drush, par exemple
drush en graphql drush et graphql_core
Requêtes avec Drupal GraphQL
Le module Drupal GraphQL fournit un outil appelé GraphiQL . Il s'agit d'un outil puissant doté d'une interface utilisateur interactive avec des fonctionnalités telles que la saisie semi-automatique. En utilisant cet outil, vous pouvez exécuter des requêtes et obtenir des sorties. Accédez à - " /graphql/explorer " pour l'interface.

Vous obtiendrez une interface utilisateur qui ressemble à ceci -

Interface utilisateur de GraphiQL
Sur le panneau latéral gauche de cette interface utilisateur, vous pouvez écrire une requête et sur le côté droit, vous verrez les résultats sous forme de sortie au format JSON. En cliquant sur Docs dans le coin supérieur droit, vous obtiendrez la documentation des requêtes disponibles. La section Variable de requête dans le panneau inférieur gauche peut être utilisée pour transmettre des variables de requête.
Exemples
1.Interrogation des nœuds

Drupal GraphQL - Interrogation des nœuds
2. Interrogation des taxonomies

Drupal GraphQL - Interrogation des taxonomies
3. Interrogation des itinéraires

Drupal GraphQL - Interrogation des routes
4. Fragments de requête

Drupal GraphQL - Fragments de requête
5.Filtres

Drupal GraphQL - Filtres
6. Filtres avec conjonction

Drupal GraphQL - Filtres avec conjonction
Les autres opérateurs disponibles sont :
- ÉGAL
- INÉGAL
- PLUS PETIT QUE
- SMALLER_THAN_OR_EQUAL
- PLUS GRAND QUE
- MEILLEUR QUE OU ÉGAL
- DANS
- PAS DEDANS
- COMME
- PAS COMME
- COMPRIS ENTRE
- PAS ENTRE
- IS_NULL
- EST NON NULLE
Les conjonctions peuvent avoir deux valeurs
- ET
- OU
Vous pouvez également utiliser des groupes pour rédiger des requêtes plus complexes.
7. Variables GraphQL

Drupal GraphQL - Variables
Mutation
Dans GraphQL, une mutation est la terminologie utilisée chaque fois que vous souhaitez ajouter, modifier ou supprimer des données stockées sur le serveur. Dans ce cas, Drupal. Malheureusement, le module n'inclut pas un moyen d'effectuer des mutations courantes en raison de certaines exigences techniques de GraphQL.
Un exemple de code pour créer, supprimer, mettre à jour et télécharger des fichiers est disponible ici : https://github.com/drupal-graphql/graphql-examples
Exemple de mutation :

Drupal GraphQL - Exemple de mutation
Drupal GraphQL avec Twig
L'utilisation de Drupal GraphQL avec Twig peut améliorer considérablement les performances de votre site Web. Voici comment : lorsque vous injectez des données dans le modèle Twig, vous pouvez récupérer toutes les données requises à l'aide d'un seul appel API. De plus, comme le client contrôle les données qu'il obtient et non le serveur, le processus est encore plus rapide.
Pour utiliser Drupal GraphQL avec Twig, nous avons besoin du module GraphQL Twig. Pour le télécharger et l'activer, utilisez les commandes suivantes :
le compositeur requiert 'drupal/graphql_twig:^1.0' drush en graphql_twig
Et puis vous pouvez utiliser la requête GraphQL dans votre site Web, par exemple
{#graphql
requete {
admin:userById(id : "1") {
fluide
Nom
}
user:currentUserContext {
fluide
}
}
#}Vous obtiendrez les données de réponse dans la variable GraphQL.
