第7章 中间件
一个简单的中间件
Express的中间件,本质上就是一个function处理函数,Express中间件的格式如下:
js// 中间件函数的形参列表中,必须包含next参数 // 而路由处理函数中只包含req和res app.get('/', (req, res, next) => { next(); });
next函数是实现多个中间件连续调用的关键,它表示把流转关系转交给下一个中间件或路由
全局生效的中间件
客户发起的任何请求,到达服务器之后,都会触发的中间件,叫做全局生效的中间件。
通过
app.use(中间件函数)
,即可定义一个全局生效的中间件多个中间件共享同一份req和res
可以通过
app.use()
连续定义多个全局中间件jsconst mw = function(req,res,next) { console.log('这是一个中间件函数'); next(); } // 将mw注册为全局生效的中间件 app.use(mw); // 简化写法 app.use(function (req, res, next) { console.log('这是一个中间件函数'); next(); })
局部生效的中间件
不使用
app.use()
定义的中间件,叫做局部生效的中间件jsconst mw = function (req, res, next) { console.log('这是一个中间件函数'); next(); } // 局部生效的中间件,仅在该路由下生效 app.get('/', mw, function (req, res) { res.send('Home Page.') }) //在其他路由中不会生效 app.get('/about', function (req, res) { res.send('About Page.') })
中间件的分类
应用级别中间件
- 通过
app.use()
或app.get()
或app.post()
,绑定到app实例上的中间件,叫做应用级别的中间件
- 通过
路由级别中间件
- 绑定到
express.Router()
实例上的中间件,叫做路由级别的中间件。它的用法和应用级别中间件没有任何区别。
- 绑定到
错误级别中间件
作用:专门用来捕获整个项目中发生的异常错误,从而防止项目异常崩溃的问题。
格式:必须有4个形参,形参从前到后,分别是
(err, req, res, next)
- js
// 放置到所有路由之后 app.use(function (err, req, res, next) { console.log('发生了错误:' + err.message); res.send('Error!' + err.message); });
Express内置中间件
- express.static 快速托管静态资源的内置中间件
app.use(express.static('public'));
- express.json 解析JSON格式的请求体数据
app.use(express.json());
- express.urlencoded 解析
app.use(express.urlencoded({ extentded: false }));
- express.static 快速托管静态资源的内置中间件
第三方中间件
- 非Express官方内置的,而是由第三方开发出来的中间件,叫做第三方中间件。在项目中,可以按需下载并配置第三方中间件,从而提高项目的开发效率
预览: