现有代码:
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”?
答案 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