javascript - 框架如何知道调用了哪个 api?
问题描述
框架如何知道调用了哪个 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,否则将返回401。所以如果url模式相似,我发现很难区分两个究竟是调用的api。有什么建议么?非常感谢您的帮助!
解决方案
Express 路由器调用与 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('*', ...)
因此,必须在最后添加全局路径。
推荐阅读
- image - 避免对相同图像进行不必要的 http 请求 - vuejs
- android - 使用 fastlane upload_to_play_store 时如何设置发布名称?
- reactjs - 如何使用 Webpack 4 在多个节点模块中组织大型 React 应用程序
- php - 在 session.save_path Codeigniter 中使用模式格式
- debugging - ig7icd32.pdb 未加载。访问冲突读取位置
- xcode - Swift 3 模式已被弃用
- css - SVG蒙版没有在Firefox中剪辑
- wpf - DataBinding:禁用组合框项
- java - 如何从 Firebase 实时数据库中获取数据并将其显示在微调器中?
- jpa - 在 JPA 中重写查询