39 lines
1.4 KiB
Markdown
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 ?
|