rest_do_request()
Définition : rest_do_request() exécute une requête REST à l’intérieur du processus PHP WordPress, sans demander au navigateur d’effectuer un appel HTTP externe. Elle renvoie un objet WP_REST_Response.
Comprendre et utiliser
À quoi sert cette notion ?
Elle permet de réutiliser le routage et les callbacks REST depuis un autre composant serveur, notamment dans des tests ou des outils internes.
Fonctionnement technique
La fonction convertit le paramètre reçu en objet requête puis demande au serveur REST de la dispatcher. Les permissions et le contexte utilisateur demeurent pertinents.
Dans quel contexte l’utiliser ?
Un test unitaire d’extension interroge une route enregistrée et vérifie son résultat sans ouvrir de connexion réseau.
Étude de cas : application professionnelle
Une requête REST interne peut être utile pour tester un contrôleur sans faire un aller-retour réseau. Créer un WP_REST_Request de lecture, appeler rest_do_request() et inspecter le WP_REST_Response obtenu. Comparer ensuite avec un appel HTTP réel. Les résultats peuvent différer si le cache, l’authentification distante ou des en-têtes sont impliqués. Cette distinction est importante lors du diagnostic d’un plugin : une réussite en test PHP ne prouve pas que le client externe est correctement configuré. Documenter les deux parcours et leur limite évite une fausse validation.
Exemple technique commenté
Cet extrait est destiné à un fichier PHP chargé par WordPress, idéalement dans un plugin local de test. Il ne doit pas être placé dans l'éditeur de contenu. Avant exécution, vérifier que les objets et variables mentionnés existent dans le contexte et que les permissions nécessaires sont définies.
<?php
$request = new WP_REST_Request( 'GET', '/wp/v2/posts' );
$request->set_param( 'per_page', 2 );
$response = rest_do_request( $request );
$status = $response->get_status();
Décryptage du code et résultat attendu
L’objet représente un GET interne. Le test lit le statut après passage dans le serveur REST, mais ne garantit pas qu’un appel distant aurait les mêmes en-têtes ou la même identité.
Exercice guidé pour vérifier la notion
Dans un WordPress de test, appeler une route publique par les deux méthodes et comparer données et statuts.
Précautions et limites
Une requête interne ne reproduit pas automatiquement tous les aspects du transport réseau, du cache de bordure et de l’authentification distante.
À ne pas confondre
rest_do_request() exécute localement un endpoint ; wp_remote_get() envoie une requête HTTP vers une adresse.
Diagnostic avancé
Si les réponses diffèrent, inspecter le contexte utilisateur et les filtres associés au transport avant d’incriminer le endpoint lui-même.
Choix d’architecture et déploiement
Utiliser les appels internes pour les tests et composants serveur maîtrisés ; ne pas détourner une route REST comme simple fonction métier lorsque un service interne suffit.
