如何在节点中声明强制参数。js/express 路由器
How to declare a mandatory parameter in node.js/express router
我得到了一系列路线,例如:
var router = express().Router;
router.get('/',middleware1,middleware2);
router.get('/courses',middleware1,middleware2,..)
router.post('/dates',middleware1,middleware2,..)
app.use('/u',router);
现在,当我在
中声明路由的根时
app.use('/u',router);
我想放置一个强制参数,该参数必须出现在微应用的每个路由中,例如
app.use('/u/:user_name/',router);
这样我就可以检查每个路由 router.param 数据库中是否存在这个参数。
是否可以通过在微应用程序的根目录中定义参数而不是像
那样在每个路由中定义类似的东西
router.get('/:user_name/',middleware1,middleware2);
router.get('/:user_name/courses',middleware1,middleware2,..)
router.post('/:user_name/dates',middleware1,middleware2,..)
因为它们在实际应用中其实很多,全部改掉会很痛苦吗?
非常感谢!
只要您使用的是足够新的 Express 版本,您应该可以使用 mergeParams
执行此操作。
var router = express.Router({mergeParams: true});
那么这将起作用:
app.use('/u/:user_name/', router);
mergeParams
记录在此处:
我得到了一系列路线,例如:
var router = express().Router;
router.get('/',middleware1,middleware2);
router.get('/courses',middleware1,middleware2,..)
router.post('/dates',middleware1,middleware2,..)
app.use('/u',router);
现在,当我在
中声明路由的根时app.use('/u',router);
我想放置一个强制参数,该参数必须出现在微应用的每个路由中,例如
app.use('/u/:user_name/',router);
这样我就可以检查每个路由 router.param 数据库中是否存在这个参数。
是否可以通过在微应用程序的根目录中定义参数而不是像
那样在每个路由中定义类似的东西router.get('/:user_name/',middleware1,middleware2);
router.get('/:user_name/courses',middleware1,middleware2,..)
router.post('/:user_name/dates',middleware1,middleware2,..)
因为它们在实际应用中其实很多,全部改掉会很痛苦吗?
非常感谢!
只要您使用的是足够新的 Express 版本,您应该可以使用 mergeParams
执行此操作。
var router = express.Router({mergeParams: true});
那么这将起作用:
app.use('/u/:user_name/', router);
mergeParams
记录在此处: