快速路线参数条件

我的Express应用程序上有一个路线,如下所示:

app.get('/:id', function (request, response) { … }); 

该ID将始终是一个数字。 但是,此时此路线与其他事物相匹配,例如/login

我想我想从这两件事情:

  1. 如果ID是一个数字,只使用这个路由
  2. 只有在没有已经定义的特定参数的路由时(例如与/login冲突)。

可以这样做吗?

扩展Marius的答案,你可以提供正则expression式和参数名称:

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

是的,请查看http://expressjs.com/guide/routing.html和https://www.npmjs.com/package/path-to-regexp (其中明确使用)。 未经testing的版本可能工作是:

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

您可以使用:

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

或这个:

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