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
所以,我有一个 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