2022-02-27 Node.js Express框架学习笔记(三) 中间件(Middleware):局部中间件,应用级中间件,路由级中间件,错误处理中间件

文章目录

        • 0.Express中间件的概念
          • 定义
          • 本质
          • 调用流程
          • next参数&next()函数
          • 中间件的作用
          • 中间件的分类
          • 注意事项
        • 1.局部生效的中间件
          • 示例
        • 2.应用级中间件(全局)
          • 语法
          • 示例:把复用性高的路由改成应用级中间件
          • 应用级中间件的注册顺序
        • 3.路由级中间件
          • 语法
          • 示例一:应用级中间件和路由级中间件的对比例子
          • 示例二:路由中间件只处理单一功能/页面
        • 4.错误处理中间件
          • 语法
          • 示例:处理浏览器地址访问不存在目录的错误

0.Express中间件的概念
定义

业务流程的中间处理环节

本质

一个function处理函数,参数:请求对象req,响应对象res,中间件next

app.use(function(req,res,next) {
   
	...
	next();
})
调用流程

当一个请求到达Express的服务器之后,可以连续调用多个中间件,从而对这次请求进行预处理。

next参数&next()函数
中间件函数的形参列表中,必须包含next参数,路由处理函数中只包含req和res.
next函数的作用:表示把流转关系转交给下一个中间件或路由。
是实现多个中间件连续调用的关键

意思就是没有next形参和调用next(),不能往下执行下一个回调函数

中间件的作用
  • 执行任何代码
  • 修改请求&响应对象
  • 终结请求&响应循环
  • 调用下一个中间件
中间件的分类
  • 应用级中间件
  • 路由级中间件
  • 错误处理中间件
  • 内置中间件
  • 第三方中间件
注意事项
1.一定要在路由之前注册中间件
2.客户端发送过来的请求,可以连续调用多个中间件进行处理
3.执行完中间件的业务代码之后,不要忘记调用 next() 函数
4.为了防止代码逻辑混乱,调用 next() 函数后不要再写额外的代码
5.连续调用多个中间件时,多个中间件之间,共享 req 和 res 对象
6.多个中间件只能在其中一个中间件中有一个res.send()语句,否则报错
1.局部生效的中间件

使用 app.use() 定义的中间件,叫做局部生效的中间件

示例
var func1 = (req, res, next) => {
   
    console.log('调用了局部生效的中间件');
    next();
}
var func2 = (req, res, next) => {
   
    console.log('调用了全局生效的中间件');
    next();
};
app.use(func2);//func2这个中间件在当前所有路由中自动调用生效
app.get('/', func1, (req, res) => {
    res.send('Home page.') }); // func1这个中间件只在当前路由中生效
app.get('/user', (req, res) => {
    res.send('User page.') });
2.应用级中间件(全局)

应用级中间件绑定到app对象,使用app.use()和app.METHOD(),
其中,METHOD表示需要处理的http请求的方法如get,post,put等等

app.use();
app.get();
app.post();
...
都可以注册中间件
语法
var express = require('

你可能感兴趣的:(笔记,nodejs,expressjs,中间件,node.js,express,路由,后端)