---
title: GraphQL
created: 2026-06-06
updated: 2026-06-06
type: concept
tags: [tech, protocol, web]
confidence: high
contested: false
sources: [synthesized]
---
# 💻 ◈ GraphQL

## Définition Courte
Langage de requête pour APIs créé par Facebook (2012, open-sourcé en 2015) permettant au client de demander **exactement** les données dont il a besoin, en une seule requête.

## Explication Détaillée
Contrairement à REST où le serveur définit la forme des réponses, GraphQL inverse la donne : le client écrit une requête qui spécifie les champs. Un endpoint unique (`/graphql`) sert toutes les demandes.

**Avantages** : évite le sur-fetching et le under-fetching, une seule requête pour des données multiples, schéma typé fort (introspection).
**Inconvénients** : complexité côté serveur (resolvers, N+1 queries), caching HTTP classique cassé, rate limiting plus complexe.

## Cas d'Usage
- APIs avec des vues très variées (mobile + web + desktop).
- Données fortement relationnelles (réseau social, e-commerce).
- Frontend découplé d'un backend existant.

## Outils Liés
- **Serveurs** : Apollo Server, Hasura, Graphene, Mercurius.
- **Clients** : Apollo Client, Relay, urql.
- **Federation** : Apollo Federation, GraphQL Mesh.

## Pages Liées
- [[api-rest]]
- [[concepts-web]]

## Questions Ouvertes
- La complexité de GraphQL est-elle justifiée pour des apps simples ?
- Comment gérer l'auth fine par champ avec GraphQL ?
