中间件(全局中间件、中间件的作用)

 全局生效的中间件

客户端发起的任何请求,到达服务器之后,都会触发中间件,叫做全局生效的中间件

通过调用app.use(传递中间件函数),即可定义一个全局生效的中间件 (这里的中间件定义要在路由前面)

const express=require('express')
//创建服务器
const app=express()

//middleware nv注册成为全局生效的中间件 //服务器收到请求会将请求先交给中间件
const mv=function(req,res,next){
    console.log('这是最简单的中间件函数')
    next()//把流转关系 转交给下一个中间件或者路由---只要这中间件中的业务处理完毕必须在最后调用next函数
}
//将mv注册为全局生效的中间件 下一个流转关系就是路由
app.use(mv)

//定义一个路由
app.get('/',(req,res)=>{
    res.send('这是服务器给的 响应客户端127.0.0.1/的get请求')
})
//定义一个路由
app.get('/user',(req,res)=>{
    res.send('这是服务器给的 响应客户端的127.0.0.1/user的get请求')
})


app.listen(80,()=>{
    console.log('服务器启动成功 127.0.0.1')
})

 定义全局中间件的简化形式 

实际上使用的中间变量的中间件和app.use(中间件函数)可以结合使用

const express=require('express')
//创建服务器
const app=express()


//middleware nv注册成为全局生效的中间件 //服务器收到请求会将请求先交给中间件
//将mv注册为全局生效的中间件 下一个流转关系就是路由
app.use(function(req,res,next){
    
    console.log('这是最简单的中间件函数')
    next()//把流转关系 转交给下一个中间件或者路由---只要这中间件中的业务处理完毕必须在最后调用next函数
})
//定义一个路由
app.get('/',(req,res)=>{
    res.send('这是服务器给的 响应客户端127.0.0.1/的get请求')
})
//定义一个路由
app.get('/user',(req,res)=>{
    res.send('这是服务器给的 响应客户端的127.0.0.1/user的get请求')
})


app.listen(80,()=>{
    console.log('服务器启动成功 127.0.0.1')
})

 中间件的作用(服务器收到请求会将请求先交给中间件)

多个中间件之间,共享同一份req和res。基于这样的特性,可以在上游的中间件中, 统一为req或者res对象添加自定义的属性或方法,可以给下游的中间件或路由进行使用。    req.startTime=time(req.属性 就是为其添加属性的——获取请求到服务器的时间,就是在中间件的时候记录时间)

const express=require('express')
//创建服务器
const app=express()


//middleware nv注册成为全局生效的中间件 //服务器收到请求会将请求先交给中间件
//将mv注册为全局生效的中间件 下一个流转关系就是路由
app.use(function(req,res,next){
    const time=Date.now() //请求到服务器的时间
    //为req对象,挂载自定义属性,从而把时间共享给后面的路由
    req.startTime=time
    next()//把流转关系 转交给下一个中间件或者路由---只要这中间件中的业务处理完毕必须在最后调用next函数
})
//定义一个路由 --在路由中得到请求到服务器的时间
app.get('/',(req,res)=>{
    
    res.send('/'+req.startTime)
})
//定义一个路由 --在路由中得到请求到服务器的时间
app.get('/user',(req,res)=>{
    res.send('/user'+req.startTime)
})



app.listen(80,()=>{
    console.log('服务器启动成功 127.0.0.1')
})

定义多个全局中间件

使用app.use()连续定义多个全局中间件。客户端请求到达服务器之后 ,会按照中间件的顺序一次进行调用,所以中间件先后很重要


const express=require('express')
//创建服务器
const app=express()


app.use(function(req,res,next){
     
    console.log('第一个中间件')
    next()//把流转关系 转交给下一个中间件或者路由---只要这中间件中的业务处理完毕必须在最后调用next函数
})


app.use(function(req,res,next){
    
    console.log('第二个中间件')
    next()//把流转关系 转交给下一个中间件或者路由---只要这中间件中的业务处理完毕必须在最后调用next函数
})
//定义一个路由
app.get('/',(req,res)=>{
    res.send('响应客户端127.0.0.1/的get请求')
})


app.listen(80,()=>{
    console.log('服务器启动成功 127.0.0.1')
})

 

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值