中间件的使用方法

72 阅读2分钟

一件中间件是一个钩住路由过程的函数,在链中的某个点上执行一个任意的操作(取决于我们希望它做什么)。

一个中间件是一个钩住路由过程的函数,在链中的某个点上执行一个任意的操作(取决于我们希望它做什么)。

它通常用于编辑请求或响应对象,或在到达路由处理程序代码之前终止请求。

中间件被添加到执行堆栈中,就像这样。

app.use((req, res, next) => { /* */ })

这与定义路由类似,但除了Request和Response对象实例外,我们还有一个对下一个中间件函数的引用,我们把它分配给变量next

我们总是在中间件函数的末尾调用next() ,以便将执行传递给下一个处理程序。除非我们想过早地结束响应并将其送回客户端。

你通常使用预制的中间件,以npm 包的形式。在这里可以找到一个大的可用列表。

其中一个例子是cookie-parser ,它被用来解析cookie到req.cookies 对象中。你可以用npm install cookie-parser 来安装它,你就这样使用它。

const express = require('express')
const app = express()
const cookieParser = require('cookie-parser')

app.get('/', (req, res) => res.send('Hello World!'))

app.use(cookieParser())
app.listen(3000, () => console.log('Server ready'))

我们还可以设置一个中间件函数只为特定的路由运行(而不是为所有的路由),方法是把它作为路由定义的第二个参数。

const myMiddleware = (req, res, next) => {
  /* ... */
  next()
}

app.get('/', myMiddleware, (req, res) => res.send('Hello World!'))

如果你需要存储在中间件中生成的数据,以便将其传递给后续的中间件函数,或传递给请求处理程序,你可以使用Request.locals 对象。它将把这些数据附加到当前的请求中。

req.locals.name = 'Flavio'