node 中间件

写在前面

express是一个简洁的,灵活的 node.js应用开发框架,他提供很多强大的功能可以帮助你创建各种web和移动设备应用。express项目的底层是由许多的中间件在协同工作,可以这么说,一个Express应用就是在调用各种中间件。

什么是中间件?

中间件是一个可访问请求对象(req)和响应对象(res)的函数。中间件就是类似于一个过滤器的东西,在客户端和应用程序之间的一个处理请求和响应的的方法。

该函数中有三个基本参数, req、res、next

  • req就是回调函数中的req对象
  • res就是回调函数中的res对象
  • next:当该中间件执行完成后自动进入下一个中间件

中间件的功能:

  • 执行任何代码
  • 修改请求和相应对象
  • 终结响应-请求循环
  • 调用堆栈中的下一个中间件

注意: 如果当前中间件没有终结请求-响应循环,则必须调用 next()
方法将控制权交给下一个中间件,否则请求就会挂起。使用可选则挂载路径,可在应用级别或路由级别装载中间件。可装载一系列中间件函数,在挂载点创建一个中间件系统栈。

自定义中间件

eg:自定义中间件中,每当有用户访问时,将访问时间和url地址记录到url.log中
每当有人访问: http://127.0.0.1:3000/index 地址时,将 /index 2019-01-10 18:10:20 --> run.log
每当有人访问: http://127.0.0.1:3000/admin 地址时,将 /admin 2019-01-10 18:10:20 --> run.log

  1. 使用fs模块中的appendFile方法,将 请求地址和时间拼接成字符串,并写入 run.log 文件中

在这里插入图片描述

  1. 将写日志的代码封装为函数,在每个路由监听中都调用一次
    在这里插入图片描述

  2. 写日志的函数改造为中间件函数
    ① 参数列表要有:req res next 三个参数
    ② 中间件执行完后必须调用next让流程进入下一个中间件
    在这里插入图片描述

express有五中类别的中间件:

  • 应用级别的中间件: 挂载到 app 上的中间件,例如:app.use()
  • 路由级别的中间件: 挂载到 router 对象上的中间件,例如:router.get()、 router.post
  • 错误级别的中间件: 回调函数中,有四个参数 app.use((err, req, res, next)=>{})
  • 内置中间件: express.static() , express提供的唯一内置中间件
  • 第三方中间件: 非express框架提供的,需要程序员手动安装才能使用的中间件;body-parser 解析post 表单数据
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值