框架如何知道调用了哪个api?

How does the framework know which api is been called?

框架如何知道调用了哪个api?

app.get('/user/:userId/name/export', function (req, res) {
   var userId = req.params.userId;
}

app.get('/user/:userId/name/:name', function (req, res) {
   var userId = req.params.userId;
   var name = req.params.name
}

我正在开发 api 网关,需要对访问控制进行一些自定义。它需要阻止 api 调用并通过路径中的参数检查用户的角色,如 db 中的 userId 和 name。如果匹配文件中的配置,将传递 acl 并调用 api,否则,将 return 401。所以如果 url 模式相似,我发现很难区分两个 api 这正是被调用的。有什么建议么?非常感谢您的帮助!

Express router 调用与 URL 路径匹配的每个回调。
Route /user/123/name/admin 只匹配第二条路径,但 route /user/123/name/export 匹配两条路径。 如果您在第一次回调时结束请求,则永远不会调用第二次:

app.get('/user/:userId/name/export', function (req, res) {
   var userId = req.params.userId;
   res.end();
}

app.get('/user/:userId/name/:name', function (req, res) {
   var userId = req.params.userId;
   var name = req.params.name
}

回调会按照添加顺序调用。所以必须在最后添加全局路径,例如 app.get('*', ...)