node.js:<6>中间件的种类

我们了解了中间件后,肯定很好奇它的用法,那么我就来给大家讲讲一些中间件的种类;

1、应用中间件:

这类中间件我们之前就学过了,就是跟在app后面的中间件,有全局和局部中间件:

app.use((req,res,next)=>{
    console.log('全局中间件二')
    req.sponse=req.sponse+'</br>我是全局中间件二'
    next()
})

//2.3 使用全局中间建
app.get('/sideall',(req,res)=>{
    res.send(req.sponse)
})

const mw1 = (req,res,next)=>{
    console.log('局部中间件1')
    req.sponse=req.sponse+'</br>我是局部中间件1'
    next()
}
//3.3 使用局部中间件
app.get('/sideone',mw1,(req,res)=>{
    res.send(req.sponse)
})

也就是我们常用的那种;

2、路由中间件:

就是将中间件挂载在路由上,我们之前也接触过路由,无非就是将中间件函数写在路由里面:

 //1.1 导入express模块 
 const express=require('express')
 //1.2 创建路由对象
 const router = express.Router()
 //2.1 挂载路由
//中间件函数
router.use((req,res,next)=>{
    console.log('我是全局中间件')
    next()
})

 router.get('/mywelcome',(req,res)=>{
    console.log('a customer come')
    res.send('hello mycustomer')
})


 //3.1 向外暴露路由对象
 module.exports = router

3、错误中间件

这一类中间件常用来捕获路由异常,防止服务器崩溃;含有四个参数,第一个参数是err其他地方和其他中间件一样,但要注意,这一类中间件最好放在所有路由的后面,不然的话,有些路由异常捕获不到会崩溃:

const express=require('express')
const app=express()
      

//1.2 编写错误路由
app.get('/user',(req,res)=>{

    throw new Error('出现不可描述的问题')

})

//1.1 定义错误中间件
app.use((err,req,res,next)=>{

    console.log('服务器错误'+err.message)
    res.send(err.message)
    next()
})

app.listen(8080,()=>{
     console.log('express running at http://127.0.0.1:8080')
})

我们利用throw new Error();抛出了一个错误,倘若没有下面的路由将会出现:

可以看到我们已经无法访问 ;但是我们加了错误捕获中间件之后:

但是服务器依然是可以使用的。

4、内置中间件,我们就用编码的中间件来介绍内置中间件吧:

以前我们用到express.static()其实也是一种内置中间件,这里我就不过多赘述;

express.json()该中间件是内置的,不需要我们编写,我们用use它即可,它的作用是将客户端请求过来的json()对象进行编译,不然我们拿不到其内容:

这里我们为了能更好的测试,直接上官网下载一个postman(点击链接,点击下载视窗版即可):
下载邮递员|免费开始使用 (postman.com)

下载完后我们免费注册一个账户即可;

//2.1 编写json格式转换应用
app.use(express.json())



//2.2 json获取路由
app.get('/name',(req,res)=>{
    console.log(req.body)
    res.send(req.body)
})

我们加入以上代码,记得一定要将app.use(express.json())放在路由之前,否则有一些路由请求的json将会无法编译;

 我们通过postman发起了一份get请求,该请求是带有json对象的,关于该对象的编写,我们在网址栏的下面点击Body再点击下面的raw,然后点击旁边的下拉箭头选择json即可在下面的空白区域编写我们要请求的json对象;

可以看到,我们已经成功拿到了我们请求的对象,倘若没有编码中间件我们将会拿到空对象:

 可以看到,我们发起一个带有urlencoded对象的请求,但我们没有加入编译urlencoded的中间件,于是就返回了一个空对象,这个请求编译的中间件同json一样是内置的中间件:

//2.3 编写urlencoded格式转换中间件
app.use(express.urlencoded({extended:false}))

//2.4 获取用户发起的urlencoded请求路由
app.get('/book',(req,res)=>{
    console.log(req.body)
    res.send(req.body)
})

我们加入上面代码即可,同样app.use(express.urlencoded({extended:false}))要放在所有路由之前;所有代码:

const express=require('express')
const app=express()

//2.1 编写json格式转换应用
app.use(express.json())
//2.3 编写urlencoded格式转换中间件
app.use(express.urlencoded({extended:false}))

//1.2 编写错误路由
app.get('/user',(req,res)=>{

    throw new Error('出现不可描述的问题')

})

//1.1 定义错误中间件
app.use((err,req,res,next)=>{

    console.log('服务器错误'+err.message)
    res.send(err.message)
    next()
})

//2.2 json获取路由
app.get('/name',(req,res)=>{
    console.log(req.body)
    res.send(req.body)
})

//2.4 获取用户发起的urlencoded请求路由
app.get('/book',(req,res)=>{
    console.log(req.body)
    res.send(req.body)
})



app.listen(8080,()=>{
     console.log('express running at http://127.0.0.1:8080')
})

5、第三方中间件,我们就用我们常用的parser模块来讲解,第三方中间件就是不是内置的,也不是我们编写的中间件,是我们下过来的,第三方写的:

1)先安装这个模块:

npm i body-parser

2)导入模块并挂载编码urlencoded的中间件,这个是第三方写的:

//3.1 安装并导入body-parser模块
const parser=require('body-parser')


//3.2 挂载第三方编码中间件
app.use(parser.urlencoded({extended:false}))


//2.4 获取用户发起的urlencoded请求路由
app.get('/book',(req,res)=>{
    console.log(req.body)
    res.send(req.body)
})

我们使用上面的编译urlencoded代码,之前的可以注释掉:

可以看到,我们同样拿到了对象,使用json也是一样的方法,也是需要将中间件放在所有路由之前。

好了,类型就这么多,下一期我们学习如何自定义一个中间件。

关注我,更多分享!

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

编程学渣ズ

谢谢老板

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值