如何在节点中声明强制参数。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 记录在此处:

https://expressjs.com/en/4x/api.html#express.router