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 表单数据
  • 3
    点赞
  • 15
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
Node.js中间件是一种函数,它可以访问请求对象(request object),响应对象(response object)和web应用程序中处理请求-响应循环流程中的中间件中间件功能可以执行任何代码,修改请求和响应对象,终止请求-响应循环,调用堆栈中的下一个中间件等。中间件可以在路由处理程序之前或之后执行,也可以在路由处理程序内部执行。中间件的主要目的是简化代码和提高应用程序的可重用性。 以下是一个使用Express框架的Node.js中间件的例子: ```javascript const express = require('express'); const app = express(); // 定义全局中间件函数 const globalMiddleware = (req, res, next) => { console.log('这是一个全局中间件'); next(); } // 定义局部中间件函数 const localMiddleware = (req, res, next) => { console.log('这是一个局部中间件'); next(); } // 应用全局中间件 app.use(globalMiddleware); // 定义路由 app.get('/', localMiddleware, (req, res) => { res.send('Hello World!'); }); // 启动服务器 app.listen(3000, () => { console.log('服务器已启动'); }); ``` 在上面的例子中,我们定义了一个全局中间件函数和一个局部中间件函数。我们使用`app.use()`方法将全局中间件应用于所有路由,使用`app.get()`方法将局部中间件应用于特定路由。当我们访问根路由时,将会依次执行全局中间件和局部中间件,然后发送“Hello World!”响应。

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值