1.中间件的分类
Express官方把常见的中间件用法,分成了5大类,分别是:
1.应用级别的中间件
2.路由级别的中间件
3.错误级别的中间件
4.Express内置的中间件
5.第三方的中间件
2.应用级别的中间件
通过app.use()或app.get()或app.post(),绑定到app实例上的中间件,叫做应用级别的中间件。
// 应用级别的中间件(全局中间件)
app.use((req,res,next)=>{
next()
})
// 应用级别的中间件(局部中间件)
app.get('/', mw1, (req, res) => {
res.send('Home Page.')
})
3.路由级别的中间件
绑定到express.Router()实例上的中间件,叫做路由级别的中间件。它的用法和应用级别中间件没有任何区别。只不过,应用级别中间件是绑定到app实例上,路由级别中间件绑定到router实例上。
var express = require('express')
var router = express.Router()
//路由级别的中间件
router.use(function(req,res,next){
console.log('Time:',Date.now())
})
app.use('/',router)
3.错误级别的中间件
错误级别中间件的作用:专门用来捕获整个项目中发生的异常错误,从而防止项目异常崩溃的问题。
格式:错误级别中间件的function处理函数中,必须有4个形参,形参顺序从前到后,分别是(err,req,res,next)
app.get('/',function(req,res){ //1.路由
throw new Error('服务器内部发生错误') //1.1抛出一个自定义的错误
res.send('Home Page.')
})
app.use(function(err,req,res,next){ //2.错误级别的中间件
console.log('发生了错误:' + err.message) //2.1在服务器打印错误消息
res.send('Error' + err.message) //2.2向客户端响应错误相关的内容
})
4.Express内置中间件
自Express4.16.0版本开始,Express内置了3个常用的中间件.
1.express.static快速托管静态资源的内置中间件,例如:HTML文件、图片、CSS样式等(无兼容性)
2.express.json解析JSON格式的请求数据(有兼容性,仅在4.16.0+版本可用)
3.express.urlencoded解析URL-encoded格式的请求数据(有兼容性,仅在4.16.0+版本中可用)
//配置解析 application/json 格式数据的内置中间件
app.use(express.json())
//配置解析 application/x-www-from-urlencoded 格式数据的内置中间件
app.use(express.urlencoded({ extended:false}))
5.第三方的中间件
非Express观风内置的,而是由第三方开发出来的中间件,叫做第三方中间件。在项目中,可以按需下载并配置第三方中间件,提高项目开发效率。
例如:在express@4.16.0之前的版本中,经常使用body-parser这个第三方中间件,来解析请求体数据。
使用第三方中间件的步骤如下:
1.运行npm install body-parser( 中间件名 ) 安装中间件
2.使用requiref导入中间件
3.调用app.use()注册并使用中间件