一尘不染

Express.js路由:可选的splat参数?

node.js

我有一条看起来像这样的路线:

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参数,或者我必须使用正则表达式来检测到这一点?

编辑

更清楚地说,这是我要达到的要求:

  • 第一和第二个参数是 必需的
  • 第一个参数是静态的,第二个参数是命名的参数。
  • 可以附加任意数量的 可选 附加参数,并且仍然可以实现。

阅读 318

收藏
2020-07-07

共1个答案

一尘不染

这适用于Express 4上的/ path和/ path / foo,请注意*before ?

router.get('/path/:id*?', function(req, res, next) {
    res.render('page', { title: req.params.id });
});
2020-07-07