1

所以,我有一个定义了一些路由的 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”,第一个总是被调用。

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

先感谢您。

4

1 回答 1

4

.../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首先匹配。

于 2019-08-16T12:25:15.170 回答