nodejs学习笔记(32) - nest学习笔记(3) :依赖注入以及中间件
依赖注入
依赖注入是一种设计模式,它可以帮助我们更好地管理这些对象之间的依赖关系。在
NestJS
中,我们可以使用依赖注入来自动创建和管理这些对象。我们只需要告诉NestJS
我们需要哪些对象,它就会自动创建它们并将它们传递给需要它们的对象。通俗点讲,例如类,我们无需自己手动的去实例化某一个类,我们只需要告诉module
层我们需要用到哪一个类即可(在module
层中使用provider
对外提供),随后在controller
的构造函数中使用装饰符@Inject
注入即可使用
源代码如下
- 下面使用了三种依赖注入的例子,包括
函数
,变量
以及类
ts
// module层 |
ts
// service层 (业务逻辑的编写) |
ts
// controller(路由编写层以及依赖的使用层) |
中间件的使用
nestjs
中的中间件与express
中的中间件非常的相似,在我做的项目以来,最常用的还是用于登录鉴权的校验,tokne
的解析校验等..中间件是在路由处理程序 之前 调用的函数。 中间件函数可以访问请求和响应对象,以及应用程序请求响应周期中的
next()
中间件函数。next()
中间件函数通常由名为next
的变量表示。
局部中间件
- 顾名思义,局部中间件是在对应模块下使用的中间件,能够在用户访问对应的请求
URL
路径时实现拦截操作
官方推荐使用命令行的形式去创建局部中间件
创建局部中间件
bash
nest g mi middleWare_name |
生成的中间件文件夹下的中间件文件
ts
// middleWare.ts |
在对应的module
中使用局部中间件
ts
// module层 |
中间件层
ts
// middleWare |
结果展示
全局中间件
- 全局中间件的编写就比局部中间件的编写简单一点,我们直接进入到
main.ts
(全局的模块引用文件)中编写即可
ts
// main.ts |
结果展示:
第三方中间件的使用
- 第三方中间件的使用方法也非常的简单,与全局中间件的使用方法是比较一致的,这里我们使用
cors
中间件来解决跨域请求(当然官方文档中也有解决跨域的方法)
安装第三方插件
bash
npm i cors |
在main.ts
中使用第三方插件
ts
import { NestFactory } from '@nestjs/core'; |
结果展示:
拓展一下官方的配置请求跨域的方法
跨源资源共享(
CORS
)是一种允许从另一个域请求资源的机制。在底层,Nest
使用了 Express 的cors 包,它提供了一系列选项,您可以根据自己的要求进行自定义。
ts
// 常用配置 - 直接在main.ts中配置即可 |
本博客所有文章除特别声明外,均采用 CC BY-NC-SA 4.0许可协议。转载请注明来自 肥林の仓库