我的Express应用程序上有一条如下所示的路线:
app.get('/:id', function (request, response) {
…
});
ID始终是一个数字。但是,目前这条路线与其他东西相匹配,例如/login
。
我想我想要两件事:
/login
的冲突)。可以这样做吗?
答案 0 :(得分:122)
扩展Marius的答案,你可以提供正则表达式和参数名称:
app.get('/:id(\\d+)/', function (req, res){
// req.params.id is now defined here for you
});
答案 1 :(得分:11)
是的,请查看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];
...
});
答案 2 :(得分: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
});