如何在Express路由器中动态创建参数?

时间:2020-06-27 07:51:23

标签: javascript node.js regex express express-router

现有代码:

const express = require('express');
const router = express.Router();
router.get('/data/:d1/:d2/:d3', require('../apifoo').foo);

Route:
/data/:d1/:d2/:d3

Path:
/data/1/2/3

req.params :
'd1' :'1',
'd2': '2',
'd3': '3'

但是如果事先不知道参数数量怎么办?我试图通过正则表达式动态定义这些参数:

router.get(/\/data(\/\d+){1,}$/, require('../apifoo').foo);

RegExp:
/\/data(\/\d+){1,}$/

Path:
/data/1/2/3

req.params :
'0' : '/3'

不幸的是,它不起作用!是否可以使用RegExp或其他方式获得与上述示例相同的“ req.params”?

1 个答案:

答案 0 :(得分:0)

您必须定义用于处理请求的特定路线,您可以做的是,可以像下面这样使参数成为可选

router.get('/data/:d1?/:d2?/:d3?', require('../apifoo').foo);

因此,此路由在/ data / 1和/ data / 1/2以及/ data / 1/2/3情况下都适用

正则表达式仅用于限制路由接受某些格式的参数以获取更多信息,请访问此网址https://expressjs.com/en/guide/routing.html