快速路由器呼叫错误的路线

时间:2019-08-16 12:15:12

标签: node.js express express-router

因此,我有一个API,其中定义了一些路由(我不会列出所有路由),除非更改名称,否则其中一个不会被调用。

这就是我在代码中定义它们的方式:

// Each middleware/function is separated by commas ofcourse
app.route('.../a/b/:params')
.get(someMiddlewares, someFunctions); 

app.route('.../a/b/c')
.get(someOtherMiddlewares, someOtherFunctions);

我注意到的是,由于第一条路线定义为“ ... / a / b /:params”,第二条路线定义为“ ... / a / b / c”,因此第一个路线总是代替。

我已经浏览了很多问题,但还没有找到答案或有类似问题的人,我想知道我能做些什么来解决此问题,而不仅仅是重命名路线。

谢谢。

1 个答案:

答案 0 :(得分:2)

.../a/b/:params在正则表达式中表示.../a/b/.*。由于.../a/b/c也与此模式匹配,因此调用第一个函数的行为符合预期。

只需将.../a/b/c放在.../a/b/:params路线的顶部即可。

app.route('.../a/b/c')
.get(someOtherMiddlewares, someOtherFunctions);

app.route('.../a/b/:params')
.get(someMiddlewares, someFunctions); 

使/a/b/c首先匹配。