Comment monter app.get() itinéraires sur un préfixe de chemin
Je suis en train d'écrire une API à l'aide de Node.js et Express. Mon API a OBTENIR des méthodes de la forme:
/api/v1/doSomething
/api/v1/doSomethingElse
Mon code est à la recherche de quelque chose comme ceci:
server.js:
var app = express();
...
var routes = require('./routes')
routes.attachHandlers(app, '/api/v1')
routes/index.js
...
module.exports.attachHandlers = function(app, context) {
//get a list of all the other .js files in routes
//for each route, require() it and call it myRoute
myRoute.attachHandlers(app, context)
}
routes/some-route.js
...
module.exports.attachHandlers = function(app, context) {
app.get(context + '/doSomething', doSomething)
app.get(context + '/doSomethingElse', doSomethingElse)
}
...
Effectivement je suis de passage le chemin de contexte/point de montage vers le bas par le biais de l'application. Si quelqu'un devait écrire une route comme la suivante, cependant, le contexte serait perdue:
app.get('/doFoo', foo)
Plutôt que d'avoir la partie de l'API monté sur /api/v1/doFoo
c'est sur /doFoo
. Je voudrais éviter d'avoir à passer le chemin de contexte autour de ce genre.
app.utilisation prend en charge le montage middleware sur une option de chemin de montage. J'ai vu des références en ligne pour le montage de l'ensemble d'une demande Expresse sur un chemin de montage à l'aide de app.use
. Cela semble être le genre de chose que je veux faire, mais je ne suis pas sûr de savoir comment faire ou si c'est la meilleure solution pour mon cas d'utilisation particulier.
Pour résumer - je veux monter mon application.get() les routes avec un préfixe particulier par défaut. Quelle est la meilleure façon de le faire?
Vous devez vous connecter pour publier un commentaire.
Je pense que express-espace de noms va travailler pour cela.
Avec Express 4.0, la tâche est beaucoup plus propre avec le Routeur. Vous pouvez créer autant de routeurs que vous avez besoin pour bien la partition de votre application, puis attachez-les avec de l'app.usage(). Par exemple:
myapp.js
Puis exécutez
et visite
Voici un exemple de montage d'une route Express 3:
./snipe3app.js
./app.js
Vous devez faire attention à l'ordre dans lequel les routes sont gérées lors de cette opération.