中间件
约 511 字大约 2 分钟
2025-03-13
一、简介
中间件的本质就是回调函数,生效方式主要分为 全局生效 和 局部生效
其写法主要分为两种:
- 路由级别:定义路由的时候引入中间件,属于局部生效;
- 应用级别:即在应用下边,全局生效或者指定路由生效;
二、引入
1、路由级别
路由级别的中间件,指的是定义路由的时候,直接挂载中间件
假设我们有这样三个中间件:
var middleWare1 = function (req, res, next) {
console.log("middleWare1");
next();
};
var middleWare2 = function (req, res, next) {
console.log("middleWare2");
next();
};
var callbackFun = function (req, res) {
res.send("callbackFun");
};
写法主要有三种:
- 列表:
app.get("/example", middleWare1, middleWare2, callbackFun)
- 数组:
app.get("/example", [middleWare1, middleWare2, callbackFun])
- 以上两种写法混合:
app.get("/example", [middleWare1, middleWare2], callbackFun);
2、应用级别
app.use()
属于应用级别的生效方式,其参数主要是为两个path
和callBack
。即给指定的path
添加callBack
中间件。
当path
省略的时候,其作用相当于给所有的路由添加该中间件。
callBack
可以是一个数组 [Array]
,也可以是是一个解构数组 ...[Array]
。
var middleWare1 = function (req, res, next) {
console.log("CB0");
next();
};
app.use("/example/c", middleWare1); // 只挂载到该路由
app.use(middleWare1); // 所有路由都生效
app.use(middleWare1, middleWare2); // 所有路由都生效
app.use([middleWare1, middleWare2]); // 所有路由都生效
也可以简化写为
app.use(function (req, res, next) {
console.log("这是一个简单的中间件函数");
next();
});
三、内置的中间件
1、express.json()
将请求体解析为JSON
格式
const express = require('express');
const app = express();
app.use(express.json());
2、express.urlencoded()
将URL里的请求参数解析为json
。
const express = require('express');
const app = express();
app.use(express.urlencoded({ extended: false }));
3、express.static()
提供静态文件服务。
const express = require('express');
const app = express();
app.use(express.static('public'));
4、express.Router()
为路由创建模块化的处理程序。
const express = require('express');
const router = express.Router();
router.get('/', (req, res) => {
res.send('Hello World!');
});
module.exports = router;
5、express-session
处理会话管理。
const express = require('express');
const session = require('express-session');
const app = express();
app.use(session({
secret: 'secret-key',
resave: false,
saveUninitialized: true,
}));
更新日志
2025/8/24 08:17
查看所有更新日志
e7112
-1于