如何在Express中路由具有可变“深度”的URL?

时间:2015-08-12 10:25:05

标签: javascript node.js express

我正在学习MEAN-Stack并在我的API中编写一个工具,它会增加一系列数字。我有两个问题,快速文档没有提供答案。

  1. 如何路由可变深度的网址? 目前,我正在做以下事情:
  2. router.route('/multiply/:a/:b')
    
        .get(function(req,res){
    
            /*multiply*/
    
            return res.send(respone);
        });

    正如你所看到的,我只能用这种方式乘以2个数字,而不是我喜欢的数量,这种方法可以路由任何东西,而不仅仅是数字和数字。湾 所以我的第二个问题是如何仅为数字作为& B'

    此致 Claas M。

2 个答案:

答案 0 :(得分:3)

您可以使用通配符路径匹配所有数字,然后自己对请求参数进行爆炸:

// matches /multiply/1/3/4/5/32/4 etc...
router.route('/multiply/:numbers([0-9]+)*')
  .get(function(req, res){

    // req.params.numbers will equal /1/3/4/5/32/4
    var numbers = req.params.numbers.split('/');
    // ..
    // multiply numbers
    // ..
    return res.send(answer);

  }); 

Express Route tester是一个非常有用的工具:http://forbeslindesay.github.io/express-route-tester/

答案 1 :(得分:0)

在我付出太多努力之后,我得出结论,使用POST而不是将数据放入URL更容易。 但如果有人知道解决方案,我仍会感激不尽。

router.route('/multiply/:a/:b')

    .post(function(req,res){

        var array = req.body.numbers;
        /*multiply*/

        return res.send(respone);
    });