因此,我有一个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”,因此第一个路线总是代替。
我已经浏览了很多问题,但还没有找到答案或有类似问题的人,我想知道我能做些什么来解决此问题,而不仅仅是重命名路线。
谢谢。
答案 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
首先匹配。