node.js - 如何使用灵活数量的参数?

时间:2014-11-26 13:24:52

标签: node.js express

看看这个电话:

//http://myserver.com/products/list/categories/
//http://myserver.com/products/list/categories/shoes/
//http://myserver.com/products/list/categories/shoes/woman
//http://myserver.com/products/list/categories/shoes/woman/leather

这就像一个网上商店,你将拥有一个根类别和未定义的类别数量

所以,在我的node.js代码上,我想实现一些灵活的类别,我不知道如何以这种方式工作。从来没有这样做过。

我的判决如下,但这将允许我使用一个论点。

app.get('/arg1:/products/list/categories/:argument', productsCategories.index);

我可以做一些非常多的参数,例如:

app.get('/arg1:/products/list/categories/:par1:', productsCategories.index);
app.get('/arg1:/products/list/categories/:par1:/par2', productsCategories.index);
app.get('/arg1:/products/list/categories/:par1:/par2:/par3', productsCategories.index);
//...par4, par5,par6......par20

并匹配到同一个文件并测试参数。但我不认为这是最好的方式。任何线索?

1 个答案:

答案 0 :(得分:1)

您可以使用正则表达式捕获路由然后拆分它们。

app.get(/^\/(.+?)\/products\/list\/categories\/((?:[^\/]+\/?)+)/, function(req, res) {
  // /test/products/list/categories/shoes/woman/leather would return [['test'],['shoes','woman','leather']]
  var webShopId = req.params[0];
  var categories = req.params[1].split('/');
});