我有一个看起来像这样的路由:
app.all('/path/:namedParam/*splat?',function(req,res,next){
if(!req.params.length){
// do something when there is no splat
} else {
// do something with splat
}
});但是,这不起作用-如果我调用path/foo/bar,它会命中路由,但如果我调用path/foo,它就不会。
有没有可能有一个可选的splat参数,或者我必须使用正则表达式来检测它?
编辑
更清楚地说,以下是我试图实现的要求:
发布于 2015-04-10 05:13:15
这适用于/path和/path/foo在Express4上,注意?之前的*。
router.get('/path/:id*?', function(req, res, next) {
res.render('page', { title: req.params.id });
});发布于 2013-01-23 21:42:02
我只是遇到了同样的问题,并解决了它。这是我使用的:
app.get('path/:required/:optional*?', ...)这应该适用于path/meow、path/meow/voof、path/meow/voof/moo/etc...
似乎通过删除?和*之间的/,最后一个/也变成了可选的,而:optional?仍然是可选的。
发布于 2012-04-05 06:30:52
这能达到你想要的效果吗?
app.all('/path/:namedParam/:optionalParam?',function(req,res,next){
if(!req.params.optionalParam){
// do something when there is no optionalParam
} else {
// do something with optionalParam
}
});更多关于快递路线的信息,如果你还没有看过的话:http://expressjs.com/guide/routing.html
https://stackoverflow.com/questions/10020099
复制相似问题