vendredi 25 septembre 2026

À propos

Contact

Lexique · HTTP & API

GraphQL

En anglais : « GraphQL »

Langage de requête pour API qui laisse le client préciser exactement les champs souhaités en une seule requête, à la différence d'une API REST où chaque endpoint renvoie une forme fixe.

Avec une API REST classique, récupérer un article et le nom de son auteur demande souvent deux appels successifs (l’un vers /posts/42, l’autre vers /users/7), ou un endpoint sur mesure qui les combine. GraphQL renverse la logique : le client envoie une seule requête décrivant précisément l’arborescence de champs qu’il veut, et le serveur répond avec exactement cette forme, ni plus ni moins.

GraphQL et WordPress

WordPress n’expose pas GraphQL nativement : son API native est REST. Pour en bénéficier, il faut une extension comme WPGraphQL, qui construit un schéma GraphQL à partir des types de contenus, taxonomies et champs personnalisés du site, exposé sur un point de terminaison unique, en général /graphql. C’est un choix fréquent dans les architectures « headless » où un front (Next.js, Nuxt…) consomme le contenu WordPress.

Exemple

query {
  post(id: "42", idType: DATABASE_ID) {
    title
    author { node { name } }
  }
}

À ne pas confondre avec

  • Une base de données graphe : GraphQL est un langage de requête pour API, il ne présuppose aucune structure de stockage particulière côté serveur.
  • REST, dont il n’est pas un remplacement universel : REST reste plus simple à mettre en cache via HTTP standard, GraphQL brille surtout quand les besoins du client varient beaucoup d’une page à l’autre.
  • Le sur-appel («overfetching») propre à certaines API REST, que GraphQL cherche justement à éviter en laissant le client choisir les champs, au prix d’une requête plus complexe à écrire côté client.
  • Un point de terminaison GraphQL mal protégé peut autoriser des requêtes très coûteuses en une seule fois (imbrications profondes) : il est courant de limiter la profondeur ou la complexité autorisée des requêtes.