node.js - 如何在node.js/express路由器中声明强制参数

标签 node.js express url-routing

我有一系列路线,例如:

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

关于node.js - 如何在node.js/express路由器中声明强制参数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46174709/

相关文章:

node.js - 如何在 Azure Bot 服务上同时使用英语和法语 QnaMaker?

javascript - ExpressJS - 使路由只能从内部重定向访问

java - 使用流通过 Spring MVC Controller 下载文件

java - 在 RequestMapping 问题中使用 @PathVariable 的 Controller 的特定 url

angularjs - router.post返回错误 "undefined is not a function"。使用mongo和express.js

javascript - Connect-mongo 更新导致持续错误 : TypeError: Cannot read property 'Store' of undefined

javascript - 关于使用 NodeJs 和 MySQL 的 Web 应用程序中的 MVC 架构模型的问题

javascript - Node.js 中的动态路由

javascript - 对 url 和 sammy.js 中带有尾部斜杠的 url 使用相同的路由

node.js - Cloudflare + 反向代理 - 错误 1000