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



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

这在快递中是如何实现的?

这是一个伪代码类型的例子,说明我的意思...

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

在表达中,您可以在路由中使用*等通配符,它还支持您可以使用的正则表达式,这是如何实现此目的的示例

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

有了params,您就可以拆分/,这将为您提供传递给路由的所有参数的数组。

有关快速路由的详细信息,请查看此页面。

作为手动拆分参数的替代方法(这可能是最好的解决方案(,您还可以定义具有最大允许参数数的路由,每个参数都是可选的:

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' }

您可以使用正则表达式来处理所有此类请求,您可以访问 ExpressJs 文档以获取更多详细信息

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