Validez le JSON avant les requêtes API

Une passe de validation rapide avant d’envoyer une requête API permet de séparer les problèmes de syntaxe JSON des erreurs d’authentification, de schéma et de back-end.

Pourquoi valider avant d’envoyer

Quand une requête API échoue, le message d’erreur peut pointer vers l’authentification, les permissions, la validation de schéma ou du JSON mal formé. Valider le corps JSON d’abord élimine toute une classe d’échecs avant que la requête n’atteigne le serveur. Cela rend aussi plus faciles à relire les commandes cURL copiées, les corps Postman, les samples de webhook et les tests d’intégration.

Contrôles de syntaxe à effectuer

Une passe stricte de validation JSON doit confirmer que le corps parse comme du JSON et que la sortie formatée correspond à ce que vous comptez envoyer.

  • Chaque chaîne et clé d’objet utilise des guillemets doubles
  • Pas de commentaires ni de virgules finales
  • Les booléens sont true ou false, pas True ou False
  • Les valeurs absentes sont null ou des clés omises, pas undefined
  • La valeur de premier niveau correspond aux attentes du endpoint

Les en-têtes comptent aussi

Un corps JSON valide peut encore échouer si la requête n’annonce pas le bon content type. Pour la plupart des APIs JSON, envoyez Content-Type: application/json. Si le endpoint vérifie aussi le Accept, ajoutez Accept: application/json pour que client et serveur s’accordent sur le format.

Corps de requête cassé

{ userId: 42, active: True, tags: ['beta',], }

Corps de requête corrigé

{ "userId": 42, "active": true, "tags": ["beta"] }

Après la validation syntaxique

La validation syntaxique prouve seulement que le document est parsable. Pour les requêtes en production, vérifiez aussi le schéma : champs obligatoires, champs inconnus, types de valeurs, longueurs de tableau, valeurs d’enum, chaînes de date, et si les identifiants numériques doivent être des nombres ou des chaînes.

Astuce de débogage

Si le serveur rejette toujours un JSON valide, comparez le corps de requête formaté à un exemple connu. Un diff JSON sémantique trouve les vrais changements de valeurs en ignorant l’ordre des clés, particulièrement utile quand les payloads sont générés par différents outils.

Un petit wrapper fetch + Ajv

Validez le corps de la réponse contre un schéma connu avant de le passer à votre code applicatif. Compilez le schéma une fois au chargement du module, puis protégez chaque appel : const validate = ajv.compile(schema); const res = await fetch(url); const data = await res.json(); if (!validate(data)) throw new Error("Schema mismatch: " + ajv.errorsText(validate.errors)); return data; — les ruptures de contrat amont remontent ainsi à la frontière et pas cinq couches plus loin.