中间件
中间件 : [应用系统] 和 [系统软件] 之间的 一个类软件
在Node中的作用:
在
NodeJS中,中间件主要是指封装http请求细节处理的方法
以 Express 框架为例,当一个请求到达服务器时,会先经过一系列配置好的中间件。
- 中间件可以对请求进行各种操作,比如
-
检查请求头(如验证用户身份的信息)、
-
解析请求体(像把 JSON 格式的数据解析出来方便后续处理),
-
还能在请求处理过程中添加一些通用的数据到请求对象中。
-
同时,它也可以对响应进行操作,比如添加一些响应头信息,或者修改响应数据等。
-
中间件的优势:
在于可以将复杂的请求处理逻辑拆分成多个小的、可复用的部分,使得代码更易维护和扩展。
目的:资源共享,功能共享,功能扩展
常用的中间件
例如在express、koa等web框架中,中间件的本质为一个回调函数,参数包含请求对象、响应对象和执行下一个中间件的函数
Express 中间件
- body - parser:用于解析传入的请求体。
- 它能处理application/x - www - form - urlencoded和application/json等格式的数据,让你可以方便地在请求处理函数中获取 POST 请求的数据。
- cookie - parser:用于解析
Cookie头信息,- 把Cookie数据解析成易于访问的对象,有助于在应用中处理用户相关的会话信息。
- morgan:这是一个日志中间件。
- 它可以将请求的相关信息(如请求方法、路径、响应状态码等)记录到控制台或者文件中,方便开发者查看请求情况。
Koa 中间件
- koa - router:用于定义路由。
- 它可以帮助你将不同的 URL 路径和对应的处理函数组织起来,清晰地构建 Web 应用的接口。
- koa - bodyparser:和 Express 中的
body - parser类似,- 用于解析请求体中的数据。
node框架:Koa
koa是基于NodeJS当前比较流行的web框架,本身支持的功能并不多,功能都可以通过中间件拓展实现。通过添加不同的中间件,实现不同的需求,从而构建一个 Koa 应用
洋葱圈模型
每次执行下一个中间件传入两个参数:
- ctx :封装了request 和 response 的变量
- next :进入下一个要执行的中间件的函数
第三方中间件
koa-bodyparser- 是将我们的
post请求和表单提交的查询字符串转换成对象,并挂在ctx.request.body上,方便我们在其他中间件或接口处取值
- 是将我们的
koa-static:中间件的作用是在服务器接到请求时,帮我们处理静态文件
总结
在实现中间件时候,单个中间件应该足够简单,职责单一,中间件的代码编写应该高效,必要的时候通过缓存重复获取数据
koa本身比较简洁,但是通过中间件的机制能够实现各种所需要的功能,使得web应用具备良好的可拓展性和组合性
通过将公共逻辑的处理编写在中间件中,可以不用在每一个接口回调中做相同的代码编写,减少了冗杂代码,过程就如装饰者模式