Files
wiki/concepts/graphql.md
T
2026-06-09 18:40:21 +02:00

39 lines
1.4 KiB
Markdown

---
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 ?