express - 对 express.js 中的中间件排序感到困惑?
问题描述
据我了解,app.use
在路由声明之前调用一个中间件,例如app.get('/hello')
导致该中间件在请求到达该路由函数之前在请求上运行。当您遇到至少三个路由和三个中间件的情况时,我会感到困惑,并且您希望这样设置:
- 路由 1 应该使用中间件 A 和 B
- 路线 2 应该使用中间件 B 和 C
- 路线 3 应该使用中间件 A 和 C
我当然错过了一些东西,因为我目前的理解使得这样的设置是不可能的。没有办法对代码中允许这种配置的语句进行排序。
如何才能做到这一点?我错过了什么?
解决方案
这应该很容易完成。像这样设置
app.use('/route1', middlewareA, middlewareB, (req, res, next) => {})
app.use('/route2', middlewareB, middlewareC, (req, res, next) => {})
app.use('/route3', middlewareA, middlewareC, (req, res, next) => {})
当您像这样定义路由时,中间件仅适用于特定路由。如果你这样做,app.use(middlewareA)
那么中间件将在它之后的所有路由中使用。
推荐阅读
- c++ - 如何解决“C2660 'SWidget::Construct':函数不接受 1 个参数”?
- javascript - 对话窗口的优先级高于 DOM 元素
- javascript - 如何在 Cypress 中的特定行上查找元素
- ios - 如何删除 CABasicAnimation 然后在 Swift 中重新启动它?
- c# - 在 MS Teams 中启用/禁用对话机器人
- vba - 根据 InputField 值将文本输出到文档
- python - 为什么这段代码输出错误的答案?
- jmeter - 9个请求后jmeter控制器如何执行
- java - 用于 Java 的 Arcgis API 的包 com.esri.arcgisruntime.ogc.kml
- reactjs - 数据网格服务器端过滤器不适用于列中的 renderCell