我的 Express 应用程序上有一条如下所示的路线:
app.get('/:id', function (request, response) {
…
});
ID 始终是一个数字。但是,目前这条路线正在匹配其他东西,例如/login
.
我想我想要两件事:
- 仅当 ID 是数字时才使用此路由,并且
- 仅当没有已定义该特定参数的路线时(例如与 冲突
/login
)。
这可以做到吗?
我的 Express 应用程序上有一条如下所示的路线:
app.get('/:id', function (request, response) {
…
});
ID 始终是一个数字。但是,目前这条路线正在匹配其他东西,例如/login
.
我想我想要两件事:
/login
)。这可以做到吗?
扩展 Marius 的答案,您可以提供正则表达式和参数名称:
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(快递使用)。可能工作的未经测试的版本是:
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
});