javascript - express.js 中的路由器基于参数

标签 javascript node.js express

我在 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 时,两条路由都有 /:username,第一个路由被优先考虑,因为它与 uri 匹配。

另请参阅这篇关于快速路线命名和排序的 stackoverflow 帖子 - Node.js Express route naming and ordering: how is precedence determined?

关于javascript - express.js 中的路由器基于参数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39524470/

相关文章:

javascript - Node.js fs.watchFile,是否可以一次检查更改?

javascript - 获取类中的所有静态 getter

node.js - 带 Node 的 Firebase, "browser-targeted Firebase bundle"

javascript - Node 应用程序通过暂停当前执行以交互方式从 react 前端获取用户输入

node.js - 如何在package.json中的nodemonConfig中定义自定义nodemon配置?

javascript - 未捕获的语法错误 : Unexpected end of input on line one

javascript - 解释 Protractor 中的 async/await

javascript - 检查元素中是否有一些文本

Javascript 格式日期

javascript - 客户端找不到 socket.io.js