我的Express应用上有一条路线如下:
app.get('/:id', function (request, response) {
…
});
该ID始终是数字。但是,此路线目前与其他条件匹配,例如/login
。
我想我希望从中得到两点:
- 仅在ID为数字时使用此路由,并且
- 仅当尚未为该特定参数定义路线时(例如与冲突
/login
)。
能做到吗?
Answers:
扩展Marius的答案,您可以提供正则表达式和参数名称:
app.get('/:id(\\d+)/', function (req, res){
// req.params.id is now defined here for you
});
/1
首先添加显式路由,它将具有优先权。
function(req, res, next)
在逻辑知道需要将控制权传递给下一个路由处理程序时从任何路由中调用next()。
是的,请查看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];
...
});
/1
其他地方说的路线,那还是可以称之为。无论如何要防止这种情况?