Node.js - 5.11 Filtrer les routes avec un préfixe commun
Quand plusieurs routes partagent le début de leur adresse, comme /admin, il est inutile de le répéter partout. Express permet de déclarer ce préfixe une seule fois, dans le fichier principal. Cette leçon explique ce mécanisme et ses conséquences sur les formulaires.
Externaliser les routes
Les routes peuvent être placées dans un fichier séparé, appelé routeur. Cela garde le fichier principal lisible, surtout quand l'application compte beaucoup de routes.
Deux routes peuvent avoir le même chemin si leurs méthodes HTTP diffèrent. Une route GET et une route POST sur /admin/product sont donc deux routes distinctes.
Ajouter le préfixe dans app.js
Retirez le segment commun, ici /admin, des chemins écrits dans le fichier de routes. Ensuite, déclarez ce segment dans app.js comme filtre. Seules les adresses qui commencent par /admin sont envoyées à ce fichier.
À l'intérieur du fichier, Express ne vérifie plus le segment /admin. Il ne contrôle que la partie suivante de l'adresse. La route complète reste donc /admin/product.
- Dans le fichier de routes : chemin écrit sans /admin.
- Dans app.js : préfixe /admin déclaré une seule fois.
- Résultat : l'adresse complète reste /admin/product.
Corriger les formulaires
Après ce changement, le formulaire qui pointait vers /product renvoie une page introuvable. Son action doit désormais pointer vers /admin/product, pour atteindre la route complète.
Une fois l'adresse corrigée, l'ajout d'un produit fonctionne à nouveau. Cela montre que le préfixe est bien appliqué à toutes les routes du fichier.
En résumé
Un préfixe commun se déclare une seule fois dans app.js. Il s'applique à toutes les routes du fichier externalisé, quelle que soit la méthode HTTP. Les formulaires doivent alors pointer vers l'adresse complète.
Points clés
- Un fichier de routes peut être séparé du fichier principal.
- Le même chemin peut servir à deux routes si les méthodes diffèrent.
- Le préfixe commun se déclare dans app.js, une seule fois.
- Le segment retiré du routeur reste présent dans l'adresse complète.
- Le formulaire doit cibler l'adresse complète, avec le préfixe.
Questions fréquentes
Le préfixe fonctionne-t-il pour toutes les méthodes HTTP ?
Oui. Le préfixe filtre toutes les routes du fichier, qu'elles soient GET ou POST.
Pourquoi le formulaire ne fonctionne-t-il plus après le changement ?
Son action pointe encore vers /product. Elle doit pointer vers /admin/product pour atteindre la route.
Peut-on déplacer les routes dans un autre fichier ?
Oui, à condition de retirer le préfixe du fichier de routes et de le déclarer dans app.js.