# Arguments et schéma des routes REST : validate_callback et sanitize_callback

> Déclarer proprement les arguments d'une route REST évite la moitié des bugs de validation. Tour d'horizon du schéma JSON et de ses callbacks.

- Auteur : Clément Hadrot
- Publié le : 2020-04-15
- Mis à jour le : 2020-04-15
- Catégorie : Headless &amp; API
- URL : https://wpmoderne.dev.wordpress-developpement.fr/headless/arguments-schema-routes-rest-validate-sanitize-callback/

## L’essentiel

- Chaque argument déclare son type, sa validation et son nettoyage
- validate_callback rejette, sanitize_callback transforme
- Erreurs 400 automatiques et cohérentes

La première route REST personnalisée que j'ai écrite validait ses arguments « à la main », avec une série de `if` au début du callback. Ça fonctionnait, mais chaque erreur retournait un message différent, parfois un code HTTP incohérent, et le code devenait vite illisible dès que la route acceptait plus de deux paramètres. Le tableau `args` de `register_rest_route()` existe justement pour éviter ça : il externalise la validation et le nettoyage, avant même que le callback principal ne soit appelé.

Cet article détaille comment déclarer des arguments avec un schéma JSON, la différence entre `validate_callback` et `sanitize_callback`, et les pièges que j'ai rencontrés en les combinant sur des routes réelles.

## Déclarer un argument avec son schéma

Chaque entrée du tableau `args` décrit un paramètre attendu par la route, sous forme d'un sous-ensemble de JSON Schema : `type`, `required`, `default`, `enum`, `minimum`/`maximum` pour les nombres, et les deux callbacks qui nous intéressent ici.

> L'essentiel à retenir : Chaque argument déclare son type, sa validation et son nettoyage ; validate_callback rejette, sanitize_callback transforme ; Erreurs 400 automatiques et cohérentes
