相关疑难解决方法(0)

Express.js路由:可选的spat param?

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

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
  }
});
Run Code Online (Sandbox Code Playgroud)

然而,这不起作用 - 如果我打电话给path/foo/bar它击中路线,但如果我打电话path/foo,它不会.

是否可以使用可选的splat参数,或者我是否必须使用正则表达式来检测它?

编辑:

为了更清楚,这是我想要实现的要求:

  • 第一和第二个参数是必需的
  • 第一个参数是静态的,第二个是命名的参数.
  • 可以附加任意数量的可选附加参数并仍然可以在路线上.

node.js express

75
推荐指数
4
解决办法
6万
查看次数

如何使用包含斜杠字符的参数?

我在person集合中的MongoDB密钥是这样的:

TWITTER/12345678
GOOGLE/34567890
TWITTER/45678901
...
Run Code Online (Sandbox Code Playgroud)

我用getPersonByKey这种方式定义路线:

router.route('/getPersonByKey/:providerKey/:personKey').
  get(function(req, res) { // get person by key
    var key = req.params.providerKey + '/' + req.params.personKey;
    // ...
  }
);
Run Code Online (Sandbox Code Playgroud)

当然我更愿意写这样的东西:

router.route('/getPersonByKey/:key').
  get(function(req, res) { // get person by key
    var key = req.params.key;
    // ...
  }
);
Run Code Online (Sandbox Code Playgroud)

但这不起作用,因为GET http://localhost/getPersonByKey/TWITTER/12345678当然会产生404,因为带斜杠的参数被解释为两个不同的参数......任何想法?

javascript regex routes node.js express

5
推荐指数
2
解决办法
3174
查看次数

标签 统计

express ×2

node.js ×2

javascript ×1

regex ×1

routes ×1