【发布时间】:2017-09-02 15:49:01
【问题描述】:
我有 3 个 express.js 路由
app.get('/packages/:name', (req, res) => {...});
app.get('/packages/search/', (req, res) => {...});
app.get('/packages/search/:name', (req, res) => {...});
第一条和第三条路线运行良好。
但是第二条路线永远不会触发。当我浏览到“localhost/packages/search/”时,它将使用res.params.name = "search/"触发第一条路由
我可以做一个“if”来检查它是否是“search/”,但我认为这不是一个好的解决方案。
我做错了吗?
【问题讨论】:
-
路由按照它们定义的顺序执行,颠倒你的顺序。
-
还要考虑
/:name将匹配/search。 -
因为在 packages/:name 中,:name 是动态的,所以 package/search 将进入 packages/:name 中,首先移动 package/search 然后它会起作用
标签: javascript node.js express router