快递路线参数条件

65 routing url-routing node.js express

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

app.get('/:id', function (request, response) {
  …
});
Run Code Online (Sandbox Code Playgroud)

ID始终是一个数字.但是,目前这条路线与其他东西相匹配,例如/login.

我想我想要两件事:

  1. 如果ID是数字,则仅使用此路由
  2. 只有当没有已定义的特定参数的路线时(例如与之冲突/login).

可以这样做吗?

dan*_*ugh 128

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

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

  • 只要首先添加显式的`/ 1`路由,它将优先. (12认同)
  • 正如JohnnyHK所说,你可以先放置显式路线.您也可以将RegEx定义为与要跳过的路线不匹配. (2认同)

Mar*_*ahl 12

是的,请查看http://expressjs.com/guide/routing.htmlhttps://www.npmjs.com/package/path-to-regexp(表示用途).可能有效的未经测试的版本是:

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