Derrière une adresse comme /wp-json/wp/v2/posts/42 se cache une combinaison exacte entre une route et une méthode HTTP : la même URL peut répondre différemment selon qu’elle reçoit une requête GET, POST ou DELETE, chacune étant un point de terminaison distinct.
Déclaration côté WordPress
Chaque point de terminaison se déclare avec register_rest_route(), en précisant la méthode HTTP acceptée, la fonction chargée de traiter la requête, et une éventuelle vérification des permissions :
register_rest_route( 'mon-app/v1', '/taches/(?P<id>\d+)', array(
'methods' => WP_REST_Server::READABLE,
'callback' => 'obtenir_tache',
'args' => array(
'id' => array( 'validate_callback' => 'is_numeric' ),
),
) );
Le motif entre parenthèses dans le chemin capture un paramètre variable, ici l’identifiant de la ressource demandée, transmis ensuite à la fonction de traitement.
Bon à savoir
- Un même point de terminaison peut accepter plusieurs méthodes à la fois en listant un tableau dans l’argument
methods, plutôt que de dupliquer l’appel àregister_rest_route(). - Sans
permission_callbackexplicite, WordPress affiche un avertissement dans les journaux et considère par défaut la route comme publique. - L’argument
argspeut définir des règles de validation et d’assainissement propres à chaque paramètre, exécutées automatiquement par WordPress avant même l’appel de la fonction de traitement. - La constante
WP_REST_Server::READABLEéquivaut simplement à la chaîneGET; les deux écritures fonctionnent, mais la constante reste préférable car elle documente mieux l’intention du code.