我有一系列路线,例如:
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
记录在此处:
关于node.js - 如何在node.js/express路由器中声明强制参数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46174709/