我在 express.js 中声明了这些路由器,我想知道为什么当我打开 localhost:3000/myname/profile 时 run user
被触发。
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 时,两条路由都有
,第一个路由被优先考虑,因为它与 uri 匹配。/:username
。
另请参阅这篇关于快速路线命名和排序的 stackoverflow 帖子 - Node.js Express route naming and ordering: how is precedence determined?
关于javascript - express.js 中的路由器基于参数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39524470/