【问题标题】:Variable number of route params in express?快递中的可变数量的路线参数?
【发布时间】:2018-01-12 00:24:07
【问题描述】:

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

这在express中是如何实现的?

这是我的意思的伪代码类型示例......

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

【问题讨论】:

    标签: javascript node.js rest express ecmascript-6


    【解决方案1】:

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

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

    【讨论】:

    • 我已经知道如何做到这一点,但想知道如何为 任何 个参数编写这个
    • @MathieuBertin 我认为这需要手动将 URL 拆分为单独的参数,
    【解决方案2】:

    您可以使用 Regex 处理所有此类请求,您可以访问 ExpressJs Documentation 了解更多详情

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

    【讨论】:

      【解决方案3】:

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

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

      一旦你有了params,你就可以在/ 上进行拆分,这将为你提供传递给路由的所有参数的数组。

      有关快速路由的更多信息,请查看this page

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2012-06-30
        • 2010-09-17
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多