快速路线参数条件
我的Express应用程序上有一个路线,如下所示:
app.get('/:id', function (request, response) { … });
该ID将始终是一个数字。 但是,此时此路线与其他事物相匹配,例如/login
。
我想我想从这两件事情:
- 如果ID是一个数字,只使用这个路由
- 只有在没有已经定义的特定参数的路由时(例如与
/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 });