对express.js中的中间件订购感到困惑?

时间:2018-11-06 10:52:07

标签: express

据我了解,在诸如app.use之类的路由声明之前在中间件上调用app.get('/hello')会使该中间件在到达该路由功能之前在请求上运行。当您遇到至少具有三条路线和三块中间件的情况,并且您想要这样设置时,我会感到困惑:

  • 路线1应该使用中间件A和B
  • 路线2应该使用中间件B和C
  • 路线3应该使用中间件A和C

我当然会缺少一些东西,因为我目前的理解使这种设置变得不可能。无法在代码中对允许这种配置的语句进行排序。

这怎么办?我想念什么?

1 个答案:

答案 0 :(得分:1)

这应该很容易完成。像这样设置

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