Conditions des paramètres des routes Express
J'ai un itinéraire sur mon application Express qui ressemble à ceci:
app.get('/:id', function (request, response) {
…
});
L'ID sera toujours un nombre. Cependant, pour le moment, cette route correspond à d'autres choses, telles que /login
.
Je pense que je veux deux choses de ceci:
- pour utiliser cette route uniquement si L'ID est un nombre, et
- seulement s'il n'y a pas de route pour ce paramètre spécifique déjà défini (comme le choc avec
/login
).
Cela Peut-il être fait?
58
demandé sur
nbro
2012-06-29 12:26:21
3 réponses
En développant la réponse de Marius, vous pouvez fournir l'expression rationnelle et le nom du paramètre:
app.get('/:id(\\d+)/', function (req, res){
// req.params.id is now defined here for you
});
115
répondu
danmactough
2013-04-12 14:31:11
Oui, découvrez http://expressjs.com/guide/routing.html et https://www.npmjs.com/package/path-to-regexp (qui expriment les usages). Une version non testée qui peut fonctionner est:
app.get(/^(\d+)$/, function (request, response) {
var id = request.params[0];
...
});
11
répondu
Marius Kjeldahl
2015-11-14 19:23:20
Vous pouvez utiliser:
// /12345
app.get(/\/([^\/]+)\/?/, function(req, res){
var id = req.params[0];
// do something
});
Ou ceci:
// /post/12345
app.get(/\/post\/([^\/]+)\/?/, function(req, res){
var id = req.params[0];
// do something
});
2
répondu
Marco Godínez
2012-12-29 07:23:26