Introduction à GraphQL et Gato GraphQL
Bienvenue dans les guides de Gato GraphQL. Vous y trouverez de nombreuses informations sur l'installation, la configuration et l'utilisation du plugin Gato GraphQL sur votre site WordPress.
Qu'est-ce que GraphQL
GraphQL est une spécification d'API qui permet aux clients (tels qu'un site web dans le navigateur ou une application mobile) de spécifier exactement les données dont ils ont besoin, et le serveur implémentant l'API récupérera exactement celles-ci.
Une requête GraphQL ressemble à ceci :
query {
posts {
id
title
content
author {
id
name
}
}
}La réponse du serveur est au format JSON, contenant les données dans la même forme que la requête. Elle ressemble à ceci :
{
"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"
}
}
]
}
}Les serveurs GraphQL peuvent également « muter » (c'est-à-dire créer et mettre à jour) des données. Dans ce cas, le mot-clé d'opération query doit être remplacé par mutation :
mutation {
createPost(input: {
title: "New post",
contentAs: { html: "Lorem ipsum dolor sit amet" }
}) {
id
status
}
}Consultez le site officiel de GraphQL sur graphql.org.
Qu'est-ce que Gato GraphQL
Gato GraphQL est un plugin pour WordPress qui transforme le site en un serveur GraphQL, vous permettant de récupérer et de modifier des données du site WordPress à l'aide du langage GraphQL.
Gato GraphQL s'efforce d'être :
Facile à utiliser
La philosophie de WordPress est que toute personne, qu'elle ait des compétences techniques ou non, doit pouvoir utiliser le logiciel. Le plugin tente de satisfaire cette philosophie en rendant aussi simple que possible la création d'une API et l'interaction avec celle-ci.
Par exemple, Gato GraphQL permet de publier des requêtes persistées (qui sont des endpoints exposant des données prédéfinies, similaires aux endpoints REST) en utilisant l'interface fournie par l'éditeur WordPress ; de la même façon qu'écrire un article, c'est accessible à tous.
Rapide
La résolution d'une requête GraphQL nécessite normalement d'itérer un graphe contenant les données de toutes les entités interrogées. Plus le graphe a de nœuds et de profondeur, plus ce processus sera lent (voire exponentiellement plus lent).
Gato GraphQL adopte une approche différente : il utilise une structure de modèle à composants pour résoudre la requête GraphQL (au lieu d'un graphe), impliquant un processus qui croît linéairement en fonction de la profondeur de la requête (et non de façon exponentielle).
De plus, seuls les éléments du schéma demandés dans la requête GraphQL sont compilés, validés et exécutés, et non l'ensemble du schéma GraphQL. Ainsi, que votre site WordPress ait 3 ou 30 Custom Post Types installés, le temps de résolution de la requête sera identique.
Puissant
Les APIs servent de principale passerelle pour que le client interagisse avec le serveur ; il est important qu'une API ne soit limitée en aucun aspect, afin de pouvoir satisfaire n'importe quelle exigence.
Ce plugin permet de modifier les résultats de l'exécution d'une requête, via des fonctionnalités personnalisées, des APIs externes et des services basés sur le cloud. Les données interrogées peuvent être itérées et manipulées selon les besoins, et la sortie de la requête peut également être modifiée de toute manière souhaitée, si bien qu'il n'y a pratiquement rien qui ne puisse être fait.
Sécurisé
Une API GraphQL pourrait facilement être mal gérée, exposant l'accès à toutes les données du site WordPress à n'importe qui, y compris des acteurs malveillants ; le serveur GraphQL doit fournir des mesures de sécurité appropriées, pour s'assurer que seuls les utilisateurs prévus accèdent aux données.
Ce plugin prend la sécurité très au sérieux et a implémenté plusieurs mesures de sécurité nativement. L'endpoint unique peut être désactivé ; les données peuvent être exposées via des requêtes persistées ; l'accès aux données est accordé via des listes de contrôle d'accès configurables (basées sur le fait que l'utilisateur soit connecté ou non, qu'il ait un certain rôle ou une certaine capacité, ou une règle personnalisée) ; et l'API peut être définie comme publique ou privée.
Tourné vers l'avenir
GraphQL est un standard qui continue d'évoluer, et la communauté continue de proposer des idées pour offrir de nouvelles fonctionnalités, à ajouter à la spécification dans le futur.
Ce plugin n'aime pas attendre ; il inclut déjà de nombreuses fonctionnalités nouvelles qui ont été proposées (comme le namespacing du schéma, l'exécution de requêtes multiples, et d'autres) en tant que fonctionnalités opt-in, qui doivent donc être explicitement activées par l'administrateur.