J'ai une application Web créée à l'aide de Node.js et Express. Maintenant, je voudrais lister toutes les routes enregistrées avec leurs méthodes appropriées.
Par exemple, si j'ai exécuté
app.get('/', function (...) { ... });
app.get('/foo/:id', function (...) { ... });
app.post('/foo/:id', function (...) { ... });
Je voudrais récupérer un objet (ou quelque chose d'équivalent) tel que:
{
get: [ '/', '/foo/:id' ],
post: [ '/foo/:id' ]
}
Est-ce possible, et si oui comment?
MISE À JOUR: Pendant ce temps, j'ai créé un package npm appelé get-routes qui extrait les routes d'une application donnée, ce qui résout ce problème. Actuellement, seul Express 4.x est pris en charge, mais je suppose que pour l'instant, c'est très bien. Juste FYI.
Réponses:
express 3.x
D'accord, je l'ai trouvé moi-même ... c'est juste
app.routes
:-)express 4.x
Applications - construites avec
express()
Routeurs - construits avec
express.Router()
Remarque : La pile inclut également les fonctions middleware, elle doit être filtrée pour obtenir uniquement les "routes" .
la source
app.routes.routes
- ce qui signifie que je pourrais faire JSON.stringify (app.routes.routes)app._router.stack
app._router.stack
n'est pas défini.la source
Cela obtient les routes enregistrées directement sur l'application (via app.VERB) et les routes enregistrées en tant que middleware de routeur (via app.use). Express 4.11.0
la source
J'ai adapté un ancien article qui n'est plus en ligne pour mes besoins. J'ai utilisé express.Router () et enregistré mes routes comme ceci:
J'ai renommé le fichier document.js dans apiTable.js et je l'ai adapté comme ceci:
alors je l'appelle dans mon server.js comme ceci:
Le résultat ressemble à ceci:
C'est juste un exemple mais cela pourrait être utile ... j'espère ...
la source
Voici une petite chose que j'utilise juste pour obtenir les chemins enregistrés dans express 4.x
la source
${Object.keys(r.methods).join(', ')} ${r.path}
))DEBUG=express:* node index.js
Si vous exécutez votre application avec la commande ci-dessus, elle lancera votre application avec le
DEBUG
module et donnera des itinéraires, ainsi que toutes les fonctions middleware en cours d'utilisation.Vous pouvez vous référer: ExpressJS - Débogage et débogage .
la source
DEBUG=express:paths
pour voir uniquement la sortie du chemin et pas tous les autres messages de débogage. Merci!Hacky copier / coller une réponse gracieuseté de Doug Wilson sur les problèmes express de github . Sale mais fonctionne comme un charme.
Produit
la source
print
?https://www.npmjs.com/package/express-list-endpoints fonctionne plutôt bien.
Exemple
Usage:
Production:
la source
server = express(); app1 = express(); server.use('/app1', app1); ...
Une fonction pour enregistrer toutes les routes dans express 4 (peut être facilement modifiée pour la v3 ~)
Sortie des journaux:
Faites-en un NPM https://www.npmjs.com/package/express-list-routes
la source
sortie json
ressemble à ça:
sortie de chaîne
ressemble à ça:
ceux-ci sont basés sur la réponse de @ corvid
J'espère que cela t'aides
la source
J'ai été inspiré par les routes express-list-routes de Labithiotis, mais je voulais un aperçu de toutes mes routes et URL brutes en une seule fois, et ne pas spécifier de routeur, et trouver le préfixe à chaque fois. Quelque chose que j'ai proposé était de simplement remplacer la fonction app.use par ma propre fonction qui stocke la baseUrl et le routeur donné. De là, je peux imprimer n'importe quel tableau de tous mes itinéraires.
REMARQUE cela fonctionne pour moi car je déclare mes routes dans un fichier (fonction) de routes spécifique qui est passé dans l'objet d'application, comme ceci:
Cela me permet de passer dans un autre objet 'app' avec une fausse fonction d'utilisation, et je peux obtenir TOUTES les routes. Cela fonctionne pour moi (supprimé une vérification d'erreur pour plus de clarté, mais fonctionne toujours pour l'exemple):
Cet exemple complet (avec certains routeurs CRUD de base) vient d'être testé et imprimé:
En utilisant cli-table, j'ai quelque chose comme ceci:
Ce qui frappe le cul.
la source
Express 4
Étant donné une configuration Express 4 avec des points de terminaison et des routeurs imbriqués
En développant la réponse @caleb, il est possible d'obtenir toutes les routes de manière récursive et triées.
Pour la sortie de chaîne de base.
Mise à jour 1:
En raison des limitations internes d'Express 4, il n'est pas possible de récupérer l'application montée et les routeurs montés. Par exemple, il n'est pas possible d'obtenir des routes à partir de cette configuration.
la source
Besoin de quelques ajustements mais devrait fonctionner pour Express v4. Y compris les itinéraires ajoutés avec
.use()
.modifier: améliorations du code
la source
Approche légèrement mise à jour et plus fonctionnelle de la réponse de @ prranay:
la source
Cela a fonctionné pour moi
O / P:
la source
Initialiser le routeur express
Importer le contrôleur utilisateur
Itinéraires utilisateur
Exporter les routes API
Production
la source
Sur Express 3.5.x, j'ajoute ceci avant de démarrer l'application pour imprimer les itinéraires sur mon terminal:
Peut-être que cela peut aider ...
la source
Vous pouvez implémenter une
/get-all-routes
API:Voici une démo: https://glitch.com/edit/#!/get-all-routes-in-nodejs
la source
Donc, je regardais toutes les réponses ... je n'aimais pas le plus ... j'en ai pris quelques-unes ... j'ai fait ceci:
pas la plus jolie ... mais imbriquée, et fait l'affaire
notez aussi le 20 là-bas ... Je suppose juste qu'il n'y aura pas de route normale avec 20 méthodes .. donc je déduis que c'est tout ..
la source
les détails de l'itinéraire indiquent l'itinéraire pour «express»: «4.xx»,
SORTIE SIMPLE DE CODE
la source
Utilisez simplement ce package npm, il donnera la sortie Web ainsi que la sortie du terminal dans une belle vue de table formatée.
https://www.npmjs.com/package/express-routes-catalogue
la source
express-routes-catalogue
affiche également les itinéraires au format HTML, contrairement à l'autre.Voici une fonction en une ligne pour imprimer les itinéraires dans un Express
app
:la source
J'ai publié un package qui imprime tous les middleware ainsi que les routes, vraiment utile lorsque vous essayez d'auditer une application express. Vous montez le package en tant que middleware, donc il s'imprime même:
https://github.com/ErisDS/middleware-stack-printer
Il imprime une sorte d'arbre comme:
la source