Hasina Razafintsalama

Hasina RAZAFINTSALAMA

← Retour au Blog
Architecture

Les erreurs classiques en architecture d'API que j'ai rencontrées en production

Après avoir audité plusieurs codebases, les mêmes erreurs reviennent. Voici les plus coûteuses,et comment les éviter.

2026-04-01·6 min

Après des années à construire et auditer des APIs, certaines erreurs reviennent avec une régularité frappante. Ce ne sont pas des oublis de syntaxe,ce sont des choix architecturaux qui semblent raisonnables au départ mais deviennent douloureux à l'échelle.

1. Exposer le schéma de base de données directement

Retourner des lignes brutes de base de données depuis l'API couple les clients au schéma interne. Toute migration,renommer une colonne, diviser une table,devient un changement cassant de l'API. Toujours utiliser une couche de sérialisation (API Resources, DTOs) entre les données et la réponse.

2. Pas de versioning

Livrer une API publique ou semi-publique sans versioning signifie que chaque changement cassant est une crise. Ajouter `/v1/` aux routes dès le premier jour. Ça ne coûte presque rien et économise des douleurs enormes quand on doit faire évoluer le contrat.

3. Réponses d'erreur incohérentes

json
// Mauvais : chaque endpoint a son propre format d'erreur
{ "msg": "not found" }
{ "error_code": 404, "message": "L'utilisateur n'existe pas" }
{ "errors": ["Ressource non trouvée"] }

// Bien : format RFC 7807 cohérent
{
  "type": "https://api.exemple.com/errors/not-found",
  "title": "Ressource Non Trouvée",
  "status": 404,
  "detail": "L'utilisateur avec l'id 42 n'existe pas."
}

4. Bloquer le cycle de requête avec des tâches lourdes

Génération de rapports, envoi d'emails, création de PDF,ces opérations ne doivent jamais bloquer une réponse HTTP. Les pousser dans une queue, retourner un job ID immédiatement, et laisser le client interroger ou recevoir un webhook quand la tâche est terminée.

5. Pas de pagination sur les endpoints de liste

Un endpoint de liste sans pagination est une bombe à retardement. Ça fonctionne avec 100 enregistrements. Ça fait tomber le serveur avec 100 000. Toujours paginer. Toujours. Taille de page par défaut de 20–50 éléments, maximum de 100.

  • Idempotence manquante sur les endpoints POST (requêtes dupliquées = données dupliquées)
  • Pas de rate limiting sur les endpoints publics (vulnérabilité DoS)
  • Secrets dans les paramètres de requête plutôt que dans les headers (les logs les exposent)
  • Pas de documentation API,OpenAPI/Swagger prend quelques minutes à configurer

Besoin d'aide sur ce sujet ? Conception d'API REST

Découvrir ce service