从零开始Node.js—09构造中间件

本文介绍了什么是中间件,中间件的构造、使用,以及几种特殊的中间件。
看完后可以对Express中间件有全面深入的了解⭐

一、什么是中间件

中间件是服务器端处理客户端请求的函数。
英文middleware,“中间”表示它作用位置是在请求的预处理部分,“件”,类似于软件的件,有处理功能的函数

本质:处理res,req的函数
工作时机:请求到达后,路由之前(代码从上到下执行,所以中间件也要写在路由之前)



一个比喻
处理客户端请求的过程中,请求和影响对象(req和res)是流水,中间件是处理流水的一个个加工厂,对req和res的属性和方法进行增删改查操作,之后再给下个工厂,最后交到路由里面,进行针对性的处理并返回响应。

二、中间件构造

中间件有入有出
入口:三个输入参数是固定的:req, res, next
出口:next();// 该语句为出口表示传递给下一个中间件或者路由

const middleware1 = (req, res, next) => {
	// 读取req传来的一些信息
	const q = req.query;
	//为res添加一些属性,带给之后的处理函数
	res.q = q;
	// 传递给下一个处理函数
	next()
}

三、中间件使用

1、全局注册

出镜率极高的全局注册函数:app.use()

app.use(middleware1);

注册之后,所有的请求都会执行

2、局部使用

写在要使用该中间件的路由前面,可以写多个

const router = express.Router();
router.get( '/',[ mv1, mv2 ], funcA);

四、特殊中间件

1、错误中间件

专门处理路由函数中出现的错误,是唯一写在路由后面的中间件,函数比较固定,一般全局注册

app.get('/', (req, res) => {
	throw new error ('出错了');
	res.send('这句不会被返回');
})

app.use((err, req, res, next) => {
	console.log('捕获错误', err.message);
	res.send('出现错误'+err.message);
})

2、内置中间件

三种:express.json()以及express.urlencoded()需要express版本在4.10.0以上

//挂载静态资源
app.use(express.static('./files'))

//将post请求json格式的body信息变为对象格式,下游通过res.body读取
app.use(express.json())

//将post请求编码的body信息解码,下游通过res.body读取
app.use(express.urlencoded({extended: false}));

3、第三方中间件

const mwp = require('三方中间件');
app.use(mvp)

4、自定义中间件

自己写个模块,构建个函数,暴露出去。要用的文件引入,注册用起来

const mv = (req, res, next) => {
	// do sth
	next();
}

module.expports = mv;
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值