首页 > 解决方案 > 对 express.js 中的中间件排序感到困惑?

问题描述

据我了解,app.use在路由声明之前调用一个中间件,例如app.get('/hello')导致该中间件在请求到达该路由函数之前在请求上运行。当您遇到至少三个路由和三个中间件的情况时,我会感到困惑,并且您希望这样设置:

我当然错过了一些东西,因为我目前的理解使得这样的设置是不可能的。没有办法对代码中允许这种配置的语句进行排序。

如何才能做到这一点?我错过了什么?

标签: express

解决方案


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

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


推荐阅读