NodeJS中Express中间件

Express中间件本质上就是一个function处理函数

中间件的作用:
多个中间件之间,共享同一份req和res,我们就可以在上游的中间件中统一为req或者res对象添加自定义的属性或方法,供下游的中间件或路由进行使用,非常方便

流程:
1.客户端发起请求
2.上游
        中间件1:req.a=10
        中间件2:res.c=30
        …
3.下游
        处理完毕响应请求
        访问req.a和res.c属性的值
4.响应回客户端

注意:
中间件要放在路由之前
调用next()之后就不要再写额外的代码

next函数是实现多个中间件连续调用的关键,把流转关系转交给下一个中间件或者路由


定义全局中间件函数

//定义一个最简单的中间件函数 完整写法
const mw=function(req,res,next){
    console.log("这是最简单的中间件函数");
    // 先经过中间件,然后把流转关系转交给下一个中间件或路由
    next()
}
//将mw注册为全局生效的中间件
app.use(mw)


 

//简化写法
app.use((req,res,next)=>{
    console.log("这是最简单的中间件函数");
    next()
})

然后再创建路由来测试中间件在这个过程中的位置,用postman发get或者post请求来测试

app.get("/",(req,res)=>{
    console.log("调用了/路由");
    res.send("Home page")
})
app.post("/user",(req,res)=>{
    console.log("调用了/user路由");
    res.send("user page")
})


如果要定义多个全局中间件,就使用app.use连续定义多个全局中间件,会按照中间件定义的先后顺序依次进行调用
定义局部生效的中间件函数

// 定义中间件函数
const mw1 = function (req, res, next) {
    console.log("调用了局部生效的中间件");
    // 先经过中间件,然后把流转关系转交给下一个中间件或路由
    next()
}

//创建路由
//这个经过中间件
app.get("/",mw1, (req, res) => {
    res.send("Home page. ")
})
//这个不经过中间件
app.get("/user", (req, res) => {
    res.send("user page. ")
})

通过路由部分就可以测试是否通过局部生效中间件。

如果想要同时使用多个局部生效中间件,可以直接用逗号分隔mw1,mw2,按照顺序先后调用,也可以用数组[mw1,mw2]

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值