📅  最后修改于: 2023-12-03 15:24:44.120000             🧑  作者: Mango
在Express框架中,中间件用于处理请求前和响应后的逻辑。它可以是一个函数、一个数组或一个组合多个中间件的字符串。
通过将中间件附加到路由定义中,可以使其适用于特定的路由。下面是一个例子:
const express = require('express');
const app = express();
// 中间件函数的定义
const myMiddleware = (req, res, next) => {
console.log('This is my middleware!');
next();
};
// 中间件附加到路由
app.get('/', myMiddleware, (req, res) => {
res.send('Hello World!');
});
上面的代码中,定义了一个名为myMiddleware
的中间件函数,它被附加到了根路由/
上。当访问这个路由时,会执行中间件函数,打印This is my middleware!
的信息并调用next()
,然后继续执行后面的处理函数并返回一个Hello World!
的响应。
也可以将多个中间件串联起来,像这样:
const express = require('express');
const app = express();
const middleware1 = (req, res, next) => {
console.log('This is middleware 1!');
next();
};
const middleware2 = (req, res, next) => {
console.log('This is middleware 2!');
next();
};
app.get('/', middleware1, middleware2, (req, res) => {
res.send('Hello World!');
});
此时,访问根路由将依次执行middleware1
和middleware2
这两个中间件函数。
在Express中,有一些内置的中间件可以直接通过app.use
方法附加到应用程序实例中,如express.json()
用于解析请求体中的JSON数据;express.urlencoded()
用于解析Form表单数据。这些中间件会在所有路由定义之前进行执行。
const express = require('express');
const app = express();
app.use(express.json());
app.use(express.urlencoded({ extended: false }));
app.get('/', (req, res) => {
res.send('Hello World!');
});
在上面的代码中,express.json()
和express.urlencoded()
是在所有路由定义之前执行的两个内置中间件函数,用于处理请求体中的JSON数据和Form表单数据。