GraphQL

GraphQL est un langage de requête pour API, décrit par un schéma typé : c'est le client qui écrit la forme exacte des données qu'il veut, et la réponse a cette forme, rien de plus. Le contraste avec REST suffit à le comprendre. Une API REST expose des ressources, en général une adresse par ressource, et renvoie ce que le serveur a décidé. Tu demandes `GET /users/42` pour afficher un nom et un e-mail : tu reçois aussi la biographie, le téléphone, l'adresse et les réglages, 1,8 Ko quand deux champs suffisaient (c'est le surchargement de réponse, *over-fetching*). Il te faut aussi ses produits ? Une seconde requête. Avec GraphQL, tu passes d'ordinaire par une seule adresse et tu décris en une fois l'utilisateur, les deux champs voulus et ses produits. REST expose des ressources, GraphQL laisse le client décrire la forme des données. Ce que le client gagne, le serveur le paie. Chaque champ est résolu par une fonction à part, et une liste de produits demandée pour chaque utilisateur retombe dans le problème N+1 si personne ne regroupe les appels (la documentation officielle renvoie à DataLoader pour ça). Une requête composée librement par le client se met moins bien en cache qu'une adresse fixe, et sans limite de profondeur ni de complexité, une seule requête imbriquée peut coûter très cher.

Site officiel

Voir sur Coeurdar