Ce programme ne nécessite aucun fichier externe manquant (index.
htm ou autre), car il se
concentre sur les fonctionnalités de routage côté serveur.
🛣️ Programme 9 : Analyse du Routage Avancé (Path
Arguments)
Ce programme est un exemple crucial de la façon d'implémenter un routage dynamique ou
des endpoints de type RESTful sur l'ESP8266. Il utilise des classes spécialisées (UriBraces et
UriRegex) pour capturer des segments de l'URI d'une requête et les utiliser comme variables.
1. Inclusions et Déclarations
Ligne de Code Explication Technique et Focus/Valeur
Rôle
#include Bibliothèque de base pour
<ESP8266WebServer.h> le serveur HTTP.
#include <uri/UriBraces.h> Classe Clé. Permet de Routage paramétré
définir des routes avec des (Simple).
espaces réservés ({})
pour capturer des
segments d'URI.
#include <uri/UriRegex.h> Classe Clé. Permet de Routage paramétré
définir des routes en (Avancé).
utilisant des expressions
régulières (RegEx) pour
une capture de segments
et une validation de format
plus précises.
ESP8266WebServer Instanciation du serveur
server(80); HTTP sur le port 80.
2. Fonction setup() (Initialisation et Routage)
Ligne de Code Explication Technique et Focus/Valeur
Rôle
[Link](WIFI_STA); / Initialisation et attente de la
[Link](ssid, password); connexion en mode
/ while ([Link]() != Station.
WL_CONNECTED)
[Link](F("/"), []() { ... }); Définition d'un gestionnaire Route statique de base.
standard pour l'URI racine
(/).
[Link](UriBraces("/users Routage par accolades. Routage Dynamique
/{}"), []() { ... }); Ce gestionnaire est appelé (Braces). Définit la
pour toute URI structure de l'endpoint.
correspondant au modèle
/users/ suivi d'un seul
segment (e.g., /users/bob
ou /users/42).
String user = Récupération de Extraction de variable
[Link](0); l'Argument de Chemin. La d'URI.
méthode pathArg(index)
est utilisée pour extraire le
segment d'URI capturé par
l'espace réservé {}. L'index
0 fait référence au premier
espace réservé dans le
modèle.
[Link](200, Envoie une réponse
"text/plain", "User: '" + user confirmant l'utilisateur
+ "'"); extrait.
[Link](UriRegex("^\\/use Routage par Expression Routage Avancé (Regex).
rs\\/([0-9]+)\\/devices\\/([0- Régulière. Ce gestionnaire Permet la capture de
9]+)$"), []() { ... }); est appelé uniquement segments multiples avec
pour une URI qui des contraintes de type (ici,
correspond exactement au numérique).
modèle RegEx : /users/ suivi
d'un ou plusieurs chiffres
([0-9]+), puis /devices/
suivi d'un ou plusieurs
chiffres.
String user = Extrait le contenu du Extraction d'Argument 1.
[Link](0); premier groupe de
capture de la RegEx, qui
correspond à l'ID de
l'utilisateur (([0-9]+)).
String device = Extrait le contenu du Extraction d'Argument 2.
[Link](1); deuxième groupe de
capture de la RegEx, qui
correspond à l'ID du
périphérique (([0-9]+)).
[Link](); Démarre l'écoute du
serveur HTTP.
3. Fonction loop() (Exécution)
Ligne de Code Explication Technique et Focus/Valeur
Rôle
[Link](); Gestion des Requêtes. Cœur de la boucle.
Cette méthode est
responsable du décodage
de l'URI de la requête
entrante et de la tentative
de correspondance avec
les modèles de route
définis (/, UriBraces,
UriRegex).
🔍 Rôle des Modèles d'URI
Le rôle principal de ce programme est de migrer au-delà du routage statique (/home, /about)
vers le routage paramétrique (/utilisateurs/42/modifier).
● UriBraces : Offre un moyen simple de créer des chemins d'API flexibles où la valeur d'un
segment ({}) est ignorée lors de la correspondance, mais capturée pour être utilisée.
● UriRegex : Permet de créer des routes complexes et strictes. Dans l'exemple fourni,
l'expression régulière garantit que les ID d'utilisateur et de périphérique ne contiennent
que des chiffres ([0-9]+). C'est essentiel pour valider le format des données directement
dans la couche de routage.
En résumé, ce programme montre comment construire des endpoints d'API complexes où
les variables (comme un ID d'utilisateur ou un nom) sont directement intégrées dans le chemin
d'accès plutôt que dans des paramètres de requête (comme ?user=bob).