express 中间件的简单应用与实现

express 中间件的简单应用与实现

看了慕课网双越老师的课之后结合自己的理解做了一些简单的总结,如有不恰当之处,欢迎指正。

提到 express 就不得不提到中间件,接下来就简单的介绍一下 expres 中间件的简单应用与部分常用函数的实现。

1. express 中间件的简单应用

在日常项目的开发中,登录验证是一个非常常见的场景,这个时候 express 中间件就可以派上用场了。接下来分别使用原生 nodeexpress 中间件的方法实现简单的登录验证。

应用场景:在获取博客列表之前要进行登录验证,只有在登录状态下才可以获取博客列表。

原生 node.js 实现登录验证:

if(method === 'GET' && req.path === '/api/blog/list') {
   
  // 若req.session.username有值说明已经登录
  if (req.session.username){
   
    // 登录状态下可以获取博客列表
    获取博客列表
  } 
}

express 中间件实现登录验证:

function loginCheck(req, res, next) {
   
    if (某个登录成功的条件) {
   
       next(); // 登录成功执行next
    } else {
   
       res.json({
   
         errno: -1,
         msg: 'login fail'
	})
    }
}
// 若在登录状态下,loginCheck会执行next函数,从而执行第二个中间件,获取博客列表。
app.get('/api/blog/list', loginCheck, (req, res, next) => {
   
    获得博客列表
})

虽然上面这个简单的例子中看上去似乎原生 node.js 要更简单一些,但是使用中间件的方式封装性更好,在一些比价复杂的项目中就能体现出优势了。

2. express 中 use, get, post, next, listen 等方法的实现

实现 express 中间件 流程图
结合上面的流程图和最后给出的完整代码,简单说明一下实现的过程:

这里以 use (在实现思路上和 get, post 是一样的)为例说明:

  • 获取路径和中间件

    use 将用户调用时传入的参数传给 register 函数,register 函数将获取到参数后分离出路径和中间两部分,路径存放在 info.path 中,中间件存放在 info.stack 中。然后 register 函数将分离开的路径和中间件再返回给 useuse 拿到分离后的路径和中间件之后,会将其赋值给 constructor 函数中 this.routes.all

注意:register 在分离路径时需要注意的一点是对于没有路径只有中间件的参数会将其路径赋值为根路径 /

  • listen 方法的实现

    使用 express 时调用 app.listen(3000) 实际上不只是监听 3000 端口还创建了一个 http 服务,参数是一个回调函数,代码如下:

    listen(...args) {
         
      const server = http.createServer(this
  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值