Express中间件

Express中间件的调用流程

当一个请求到达Express的处理器后,可以连续调用多个中间件,对请求进行预处理

Express中间件的格式

Express的中间件,本质上就是一个function处理函数,格式如下:

const mw = function(req, res, next) {
	// next() 函数的作用: 它是中间件连续调用的桥梁,它表示把流转关系转交给下一个中间件或路由
	next()
}

全局生效的中间件

客户端发起的任何请求,到达服务器后,都会触发的中间件,叫做全局的中间件。通过调用app.use(中间件函数)即可定义一个全局生效的中间件函数,可以使用app.use()定义多个中间件,执行顺序按照定义顺序来调用

/*按照顺序执行,先执行中间件一在执行中间件二*/
// 写法一
app.use(function(req, res, next){
    console.log('哈哈哈,我是中间件一')
    next()
})
// 写法二
const mw = function(req, res, next){
    console.log('哈哈哈,我是中间件二')
    next()
}
app.use(mw)

中间件的作用

多个中间件之间,共享一份req和res。基于这样的特性,我们可以在上游的中间件中统一为req或者res添加自定义的属性或方法,供下游的中间件或者路由使用
在这里插入图片描述
实例:

const express = require('express')
const app = express()
app.use(function(req, res, next){
    req.testcode = '001'
    next()
})
app.get('/user/list', (req, res) => {
    console.log(req.testcode) // '001'
    res.send('我是get请求')
})
app.listen(8085, () => {
    console.log('服务器运行起来了')
})

局部生效的中间件

不使用app.use()定义的中间件,叫做局部中间件

const mw1 = function(req, res, next){
    console.log('我是局部中间件1')
    next()
}
const mw2 = function(req, res, next){
    console.log('我是局部中间件2')
    next()
}
// 一个中间件
app.get('/test1', mw1, (req, res) => {
    res.send('这是测试代码')
})
// 多个中间件
app.get('/test2', mw1, mw2, (req, res) => {
    res.send('这是测试代码')
})
// 或者
app.get('/test3', [mw1, mw2], (req, res) => {
    res.send('这是测试代码')
})

了解中间件的5个注意事项

①一定要在路由之前注册中间件
②客户端发送过来的请求,可以连续调用多个中间件进行处理
③执行中间件的业务代码后,不要忘记调用next()函数
④为了防止代码逻辑混乱,调用next()函数后不要写额外的代码
⑤连续调用多个中间件时,多个中间件之间,共享req和res对象

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值