快递中可变数量的路线参数?
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 });