28 votes

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 à partir de cela: utiliser uniquement cette route 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 conflit avec /login ) .

Cela peut-il être fait?

58voto

danmactough Points 1992

En développant la réponse de Marius, vous pouvez fournir l'expression régulière ET le nom du paramètre:

 app.get('/:id(\\d+)/', function (req, res){
  // req.params.id is now defined here for you
});
 

6voto

Marius Kjeldahl Points 4325

Oui, consultez http://expressjs.com/guide.html et recherchez «regex». Une version non testée qui peut fonctionner est:

 app.get(/^(\d+)$/, function (request, response) {
  var id = request.params[0];
  ...
});
 

1voto

Marco Godínez Points 529

Vous pouvez utiliser:

 // /12345
app.get(/\/([^\/]+)\/?/, function(req, res){
  var id = req.params[0];
  // do something
});
 

ou ca:

 // /post/12345
app.get(/\/post\/([^\/]+)\/?/, function(req, res){
  var id = req.params[0];
  // do something
});
 

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X