express.js中的路由器基于参数
我有express.js声明这些路由器,我想知道为什么run user
触发当我打开本地主机:3000 / myname /configuration文件。
router.get('/:username', function(req, res, next) { console.log('run user') }); router.get('/:username/profile', function(req, res, next) { console.log('run user profile') });
我希望它不会,如何解决? 请任何人帮助我? 先谢谢你….
只需重新排列代码,如下所示,你的代码应该可以正常工作。
router.get('/:username/profile', function(req, res, next) { console.log('run user profile') }); router.get('/:username', function(req, res, next) { console.log('run user') });
问题在于定义路由的顺序,因为当你点击http://localhost:3000/myname/profile.
时,这两个路由都有/:username
http://localhost:3000/myname/profile.
,第一条路线是优先的,因为它匹配uri。
在快速路由命名和sorting中也请参考这个stackoverflow文章 – Node.js快速路由命名和sorting:如何确定优先级?
你确定吗? 我试过你的代码,它触发run user profile
可能你应该显示所有的代码。