nodejs学习笔记(8)-express框架学习(2)-express中间件
express
中间件
Express
是一个自身功能极简,完全是由路由和中间件构成一个的web
开发框架:从本质上来说,一个Express
应用就是在调用各种中间件。中间件(
Middleware
) 是一个函数,它可以访问请求对象(request object (req)
), 响应对象(response object (res)
), 和 web 应用中处于请求-响应循环流程中的中间件,一般被命名为next
的变量。中间件的功能包括:
- 执行任何代码。
- 修改请求和响应对象。
- 终结请求-响应循环。
- 调用堆栈中的下一个中间件。
如果当前中间件没有终结请求-响应循环,则必须调用 next() 方法将控制权交给下一个中间件,否则请求就会挂起。
Express
应用可使用如下几种中间件:- 应用级中间件
- 路由级中间件
- 错误处理中间件
- 内置中间件
- 第三方中间件
使用可选则挂载路径,可在应用级别或路由级别装载中间件。另外,你还可以同时装在一系列中间件函数,从而在一个挂载点上创建一个子中间件栈。
1.应用级中间件
- 应用级中间件绑定到
app
对象 使用app.use()
和app.METHOD()
, 其中,METHOD
是需要处理的HTTP
请求的方法,例如GET, PUT, POST
等等,全部小写。
代码展示:
// express中间件 - 应用级别中间件 |
结果展示:
全局调用(没有加入
path
参数)指定调用(加入指定的
path
参数)
2.路由级中间件
- 路由级中间件和应用级中间件一样,只是它绑定的对象为
express.Router()
。
代码展示:
- 创建路由(
router.js
)
// 创建路由 |
- 路由级中间件的调用(
路由级别中间件.js
)
// express中间件 - 路由级别中间件 |
结果展示:
浏览器中发送请求
终端中显示
3.错误级中间件
- 错误处理中间件和其他中间件定义类似,只是要使用 4 个参数,而不是 3 个,其签名如下:
(err, req, res, next)
。 - 一般写在前所有中间件的最后面,用于捕获整个项目的错误,防止程序崩溃
代码展示:
- 这里就展示js文件,
router
是沿用上面的路由中间件的
// express中间件 - 错误级别中间件 |
结果展示:
- 当访问到不存在的路由
url
时,就会在浏览器中报错,并且请求状态码为404
4.内置中间件
自
Express 4.16.0
版本开始,Express
内置了 3 个常用的中间件,极大的提高了Express
项目的开发效率和体验express.static
快速托管静态资源的内置中间件,例如: HTML 文件、图片、CSS
样式等(无兼容性)
app.use(express.static('public'))//public表示目标文件夹的名字
app.use(express.static('uploads'))//同上
app.use(express.static('files'))//同上express.json
解析JSON
格式的请求体数据[post
](有兼容性,仅在4.16.0+
版本中可用)express.urlencoded
解析URL-encoded
格式的请求体数据(有兼容性,仅在4.16.0+
版本中可用)其实多用于解析post
请求参数的
基本使用
// 导入express模块 |
static
用法在后面的托管静态资源中会详细讲解
5.第三方中间件
- 这个其实就是引用第三方的中间件而已,安装所需功能的 node 模块,并在应用中加载,可以在应用级加载,也可以在路由级加载。
实行流程
- 安装第三方中间件
$ npm i xxx |
- 使用
require
导入中间件 - 调用
app.use()
注册并使用中间件
本博客所有文章除特别声明外,均采用 CC BY-NC-SA 4.0许可协议。转载请注明来自 肥林の仓库