La méthode complète pour concevoir des APIs web claires, du point de vue de celui qui les consomme.
Pourquoi ce livre
On apprend tous à consommer des APIs avant d'en concevoir. Et le jour où on en livre une, ça se voit : un champ nommé sts, une date au format maison, une opération qui recrache une table de base de données telle quelle. Le consommateur, lui, galère, jure, et finit par écrire trois fonctions pour rattraper nos choix. Concevoir une API, ça ne s'improvise pas, et c'est précisément ce que presque personne ne nous a appris.
Arnaud Lauret, un Français connu sous le nom d'« API Handyman », a écrit le livre qui manquait. Cette 2e édition de 2025 prend un sujet qu'on traite d'habitude au feeling et en fait une méthode, du besoin métier jusqu'au document OpenAPI. Le fil rouge n'est pas la technique, c'est une obsession : tout se conçoit du point de vue de celui qui va consommer l'API, jamais de celui qui l'implémente.
Les idées qui restent
Le livre fait près de 580 pages en trois parties. Voilà ce qui reste, une fois refermé.
1Le Kitchen Radar : concevez pour qui s'en sert
Lauret ouvre sur un four à micro-ondes rebaptisé « Kitchen Radar », dont la seule commande est un bouton « MAG. » qu'il faut maintenir enfoncé selon un timing précis pour doser la puissance du magnétron. Pour réchauffer votre soupe, vous devez devenir expert en magnétron. « L'interface tournée vers l'intérieur force les utilisateurs à devenir des experts du magnétron. » C'est exactement ce que font la plupart des APIs : elles exposent leur mécanique interne au lieu de ce que l'utilisateur veut faire.
La règle qui traverse tout le livre : on conçoit du point de vue du consommateur. Les gens ne veulent pas « allumer le magnétron », ils veulent « réchauffer un plat ». Une bonne API, c'est le serveur de restaurant qui cache la cuisine, pas le chef qui vous hurle la recette.
2Recettes et ingrédients : décidez QUOI avant COMMENT
Avant de choisir la moindre URL ou le moindre verbe HTTP, Lauret vous fait lister, en langage courant, ce que les utilisateurs veulent accomplir. Sa méthode tient dans un tableau, l'« API Capabilities Canvas » : utilisateur, cas d'usage, étape, entrée, succès, échec, opération.
Sa formule : « les cas d'usage sont des recettes, et les opérations sont leurs ingrédients génériques ». L'opération bien pensée est générique (« chauffer un aliment à une puissance et une durée données »), pas spécifique (« chauffer du lait et du chocolat »). Séparer le QUOI (les capacités, en français) du COMMENT (REST, HTTP) empêche les réflexes d'implémentation de déformer le design dès le départ.
3Votre API n'est pas votre base de données
Le péché le plus courant : recopier la base dans l'API. Une colonne nommée CUSD, une table renvoyée telle quelle, un supplier.phone exposé juste parce qu'il est stocké.
La règle de Lauret : la donnée que vous échangez est une représentation, pas une copie de votre stockage. « Concentrez-vous sur la donnée échangée du point de vue du métier, pas du stockage. » Les noms, les types, la structure peuvent tous différer entre l'API et la base ; c'est l'implémentation qui fait la traduction. Le consommateur doit voir un champ clair comme découvertAutorisé : actif, jamais un nom de colonne brut comme CUSD ni le schéma de vos tables.
4L'effet « wow » : des noms prévisibles donnent des super-pouvoirs
Un bon nom permet à un développeur de deviner le reste. Lauret le dit ainsi : « un design d'API intuitif donne des super-pouvoirs aux développeurs, ils peuvent deviner les données et les opérations disponibles. » Il montre le nettoyage d'un vrai champ bancaire : ACTBLNDFPRTFTBKACC devient, étape par étape, overdraftFacility.active.
Et être interopérable, c'est réutiliser les standards existants au lieu d'inventer les siens :
- IBAN pour un compte ;
- ISO 8601 pour une date (
1982-12-20T10:31:00Zplutôt qu'un timestamp Unix illisible) ; - GeoJSON pour des coordonnées.
Un développeur qui connaît déjà le standard n'a aucune documentation à lire. Le contraste tient dans une réponse JSON :
// ✗ deviné par personne // ✓ deviné par tous, et standard
{ "ACTBLNDFPRTFTBKACC": true, { "overdraftFacility": { "active": true },
"dt": 1671531060 } "createdAt": "1982-12-20T10:31:00Z" }
5Les erreurs : soyez généreux, dites tout d'un coup
Un 400 Bad Request vide, c'est une gifle. Une erreur utile dit ce qui ne va pas, où, et ce qui est accepté. Surtout, elle renvoie TOUS les problèmes en une fois, pas un par aller-retour : on n'oblige pas le consommateur à corriger, renvoyer, découvrir l'erreur suivante, recommencer.
// ✗ 400 Bad Request (vide : au consommateur de deviner)
// ✓ 400 + application/problem+json : TOUT, d'un coup
{ "type": "validation-error",
"errors": [
{ "field": "email", "issue": "format invalide" },
{ "field": "age", "issue": "doit être >= 18" }
] }
Lauret s'appuie sur la loi de Postel (soyez libéral dans ce que vous acceptez, strict dans ce que vous renvoyez) et sur le standard RFC 9457 (application/problem+json), pour que le format des erreurs soit prévisible d'une API à l'autre. Une erreur, ça doit aider à résoudre, pas juste signaler.
6La donnée la plus sûre est celle qui n'existe pas
Le concepteur ne peut pas régler tous les problèmes de sécurité, mais c'est lui qui décide de la surface exposée. « La donnée ou l'opération la plus sûre est celle qui n'existe pas. » Trois façons de l'appliquer :
- ne pas l'exposer du tout ;
- la masquer (4444 au lieu du vrai numéro de carte) ;
- la cacher derrière une permission.
Et un avertissement qui surprend tout le monde : HTTPS ne protège PAS tout. Il chiffre le tuyau, mais la donnée finit dans des logs, traverse des intermédiaires, et atterrit sur des appareils non maîtrisés (votre propre appli bancaire tourne sur le téléphone du client).
Conséquence : jamais de donnée sensible dans une URL, parce que les URL sont journalisées. Et « l'opacité n'est pas de la sécurité » : un identifiant illisible n'est pas un contrôle d'accès.
7Le meilleur appel API est celui qui n'a pas lieu
Un tableau de bord qui déclenche 100 appels en parallèle et met jusqu'à 11 secondes devient un seul GET /dashboard en 100 millisecondes, simplement en arrêtant de déléguer l'assemblage au consommateur. « L'appel API le plus efficace est celui qui n'a pas lieu. »
Mais Lauret est d'une honnêteté rare : la plupart des problèmes de performance qu'il a vus n'avaient rien à voir avec le design. « La cause la plus fréquente, c'étaient les bases de données ; je ne compte plus le nombre de fois où la solution était d'ajouter un index manquant. » Mesurez la vraie cause avant d'ajouter de la complexité à l'API.
8Modifier sans casser : restez en v1 le plus longtemps possible
Dès qu'une API a des consommateurs, chaque changement risque de les casser. Lauret cartographie les deux camps :
- sans danger : ajouter un champ optionnel, élargir une limite ;
- cassant : renommer, supprimer, rendre un champ obligatoire.
Il invoque la loi de Hyrum : avec assez d'utilisateurs, tout comportement observable de votre API finira par être utilisé par quelqu'un, qu'il soit documenté ou non. Son conseil va contre le réflexe du « passons en version 2 » : restez en version 1 le plus longtemps possible, et ne cassez tout que si ça vaut vraiment le coût.
Et concevez extensible dès le premier jour. Le booléen est un piège : il n'a que deux états, et le 3ᵉ cas vous force à le renommer (cassant). L'énumération laisse la porte ouverte :
// ✗ binaire : le jour où "en attente" arrive, executed ne suffit plus
{ "executed": true }
// ✓ extensible : ajouter une valeur ne casse aucun client
{ "status": "executed" } // puis "pending", "cancelled"…
Trois choses que je ne savais pas
- Tout le livre tourne sur trois APIs fictives suivies du début à la fin : un réseau social, une boutique en ligne et une banque. Du coup chaque principe a le même exemple concret qui revient, et on voit la même API se transformer au fil des chapitres. C'est répétitif, mais ça ancre.
- Lauret conçoit « design-first » : on écrit la spécification OpenAPI PENDANT qu'on conçoit, comme outil de réflexion, pas comme documentation rédigée après coup. Et on la passe ensuite au linter (Spectral) exactement comme on linte du code, pour faire respecter les règles automatiquement. Il prévient quand même : ne commencez pas l'OpenAPI trop tôt, ça force une pensée REST prématurée.
- Sur la gouvernance, il a une formule : des règles d'API doivent être un facilitateur, pas « la police de l'API qui hurle sur les gens qui ne suivent pas les règles ». Et sur l'IA (nouveauté de cette édition 2025) : apprenez les fondamentaux avant de dépendre d'une IA, « car l'IA peut produire des réponses fausses, inexactes ou incomplètes ».
Mon avis, honnêtement
C'est le livre qui transforme le design d'API d'un truc qu'on bricole au feeling en un vrai savoir-faire qu'on peut enseigner. La discipline du « point de vue du consommateur », la règle de ne jamais exposer sa base, la méthode recettes/ingrédients : tout ça, je ne l'ai vu nulle part ailleurs aussi clairement. Et les métaphores font mouche, le four à micro-ondes débile, le serveur de restaurant : on les retient.
Ce qui pèse, c'est le format. Près de 580 pages, et une méthode systématique jusqu'à l'épuisement. La première partie vous fait suivre identifier, observer, représenter, modéliser, décrire, sur le MÊME exemple de boutique, pendant six chapitres. Les exemples sont excellents, mais ils défilent sans relâche. C'est un manuel de référence, pas un livre qu'on dévore. On le lit le clavier à côté, ou on le picore au besoin.
Reste que Lauret ne survend jamais. Il avoue que la plupart des soucis de perf venaient d'un index de base manquant, pas de l'API. Il conseille de rester en v1 « pour toujours » si elle suffit. Il refuse de pousser GraphQL par défaut. Et cette édition est vraiment à jour : OpenAPI 3.1, la RFC 9457 pour les erreurs, HTTP/2, et même l'IA. Sur un sujet où la plupart des ressources datent, c'est précieux.
Odilon
Toujours valable en 2026 ?
Plus que jamais, et pour une raison qui tombe à pic. Les APIs ne sont plus seulement consommées par des humains et leurs applis : elles le sont par des agents IA, à qui on donne des « outils » à appeler. Or un agent a exactement les mêmes besoins qu'un développeur humain, en pire : une API prévisible, bien nommée, qui se décrit elle-même. Tout ce que ce livre vous apprend à faire pour le « wow » d'un développeur, c'est précisément ce qui permet à un LLM d'appeler le bon endpoint avec les bons paramètres. Lauret l'a vu venir dans cette édition. Son obsession du point de vue du consommateur s'étend naturellement à un consommateur qui n'est pas humain.
Pour qui ?
Lisez-le si
- Vous concevez ou maintenez des APIs REST et vous le faites surtout au feeling
- Vous en avez assez des APIs qui recrachent la base de données telle quelle
- Vous voulez une méthode reproductible, du besoin métier jusqu'au document OpenAPI
- Vous mettez en place des règles ou une gouvernance d'API dans une équipe
Passez votre chemin si
- Vous cherchez un tuto express « une API en une heure » : c'est une méthode complète, pas un démarrage rapide
- Vous faites exclusivement du GraphQL ou du gRPC : le livre est centré REST/HTTP, même s'il s'ouvre dessus à la fin
- Vous voulez du concept pur : c'est un manuel pratique, très systématique, parfois répétitif
Pour aller plus loin
Les idées de ce livre se prolongent dans mes cours gratuits : construire et déployer un vrai service dans le cours sur le déploiement, et l'art de relire ce que produit une machine dans Coder avec l'IA, où une API claire devient justement le contrat qu'un agent peut suivre sans se tromper.
D'autres fiches arrivent : un livre à la fois, la substantifique moelle seulement.
Commentaires (0)