快递中可变数量的路线参数?

cex.io的RESTful API有一个有趣的路线,可变数量的参数返回给定的所有货币对。

这是如何实现的?

这里是一个伪代码types的例子,我的意思是…

app.get('/pairs/:arg1/:arg2/:argn...', function(req, res, next) { // app logic }); 

在express中,你可以在你的路由中使用*这样的通配符,它​​也支持你可以使用的正则expression式,下面是一个如何实现这个的例子

 app.get('/pairs/*', function(req, res) { console.log(req.params[0]); }); // GET /pairs/testing/this/route // Output: testing/this/route 

一旦你有了params你就可以分割/这将给你一个传递给路由的所有参数的数组。

有关快速路由的更多信息,请参阅此页面 。

作为手动分离参数的替代方法(这可能是最好的解决scheme),还可以定义一个允许的最大参数数量的路由,每个参数都是可选的:

 app.get('/pairs/:arg1?/:arg2?/:arg3?/:arg4?', ...) 

(最多允许4个参数)

结果将是:

 /pairs/USD { arg1: 'USD', arg2: undefined, arg3: undefined, arg4: undefined } /pairs/USD/EUR { arg1: 'USD', arg2: 'EUR', arg3: undefined, arg4: undefined } /pairs/USD/EUR/RUB { arg1: 'USD', arg2: 'EUR', arg3: 'RUB', arg4: undefined } /pairs/USD/EUR/RUB/BTC { arg1: 'USD', arg2: 'EUR', arg3: 'RUB', arg4: 'BTC' } 

您可以使用Regex处理所有这些请求,您可以访问ExpressJs文档以获取更多详细信息

 app.get('/pairs/*', function(req, res, next) { // app logic });