如何在 Express 路由器中动态创建参数?
How to create parameters in Express router dynamically?
现有代码:
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'?
你必须定义处理请求的特定路由你可以做的是你可以像下面这样使参数可选
router.get('/data/:d1?/:d2?/:d3?', require('../apifoo').foo);
所以这条路线将适用于 /data/1 和 /data/1/2 以及 /data/1/2/3
的情况
路由中的正则表达式仅用于限制路由接受特定格式的参数有关更多信息,请访问此 url https://expressjs.com/en/guide/routing.html
现有代码:
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'?
你必须定义处理请求的特定路由你可以做的是你可以像下面这样使参数可选
router.get('/data/:d1?/:d2?/:d3?', require('../apifoo').foo);
所以这条路线将适用于 /data/1 和 /data/1/2 以及 /data/1/2/3
的情况路由中的正则表达式仅用于限制路由接受特定格式的参数有关更多信息,请访问此 url https://expressjs.com/en/guide/routing.html