快递路线参数条件(Express routes parameter conditions)

2019-06-25 21:18发布

我有我的快递应用程序的路线,看起来像这样:

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

该ID将永远是一个数字。 然而,目前这条线路匹配其他的东西,如/login

我想,我想从这两个方面:

  1. 仅使用该路由如果ID是一个数字,并
  2. 仅当不存在用于已定义(诸如与冲突特定paramater的路由/login )。

可以这样做?

Answer 1:

扩大马吕斯的回答,您可以提供正则表达式和参数名:

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


Answer 2:

是的,检查出http://expressjs.com/guide/routing.html和https://www.npmjs.com/package/path-to-regexp (其表达用途)。 可工作的未经测试的版本是:

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


Answer 3:

您可以使用:

// /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
});


文章来源: Express routes parameter conditions