Express路由器调用错误的路由

Express router calls the wrong route

所以,我有一个 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”,因此第一个总是被调用。

我已经查看了很多问题,但我还没有找到答案或任何有足够类似问题的人,我想知道我能做些什么来解决这个问题,而不仅仅是重命名路线。

提前致谢。

.../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