express.js中的中间件排序混乱



据我所知,在路由声明(如app.get('/hello')(之前在中间件上调用app.use会导致中间件在请求到达路由函数之前在请求上运行。当你遇到至少有三条路由和三个中间件的情况,并且你想要这样设置时,我会感到困惑:

  • 路由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)那样做,那么中间件将在它之后的所有路由中使用

最新更新