NestJS 学习笔记

Official websie:https://docs.nestjs.com/

Node Version: 20.11.1

Nestjs Version: 10.0.0

1、创建项目

# 安装脚手架
npm i -g @nestjs/cli

# 创建项目
nest new project-name

# 创建module
nest generate module openapi

# 创建cotroller
nest generate controller user

# 创建service
nest g service user

2、运行

1. 创建 openapi module

2. 修改package.js,添加运行命令

"start:openapi": "nest start openapi  --debug 9230 --watch",

3. 在main.openapi.ts文件中引入OpenApiModule。

4. 在nest-cli.json文件中配置projects,添加openapi。

5. 创建一个tsconfig.openapi.json文件,配置openapi项目的一些配置,例如包含哪些文件,排除哪些问题。

3、依赖注入

1. 创建好的Controller以及Service要在OpenApiModule进行注入。

2. 如果在Controller中要使用Service,则直接在构造函数中获取实例即可。

4、拦截器

1. Nestjs自带拦截器接口,直接实现它就行

2. 定义好拦截器以后,在Controller中直接使用即可

5、守卫

1. Nestjs自带Gard,实现CanActivate接口就可以了。

2.  实现后在Controller中直接使用即可(也可加在方法上面)。

6、拦截器和守卫的简单区别

  • 守卫(CanActivate:决定请求是否应该被处理,主要用于权限控制。
  • 拦截器(NestInterceptor:修改请求或响应数据,用于日志记录、数据转换等,不阻止请求的处理。

7、NestJs 钩子函数

1. OnModuleInit

onModuleInit() 是在模块初始化完成后调用的,但它比 onApplicationBootstrap() 早执行。这意味着,如果你的代码需要在模块初始化后但在应用完全启动前执行,onModuleInit() 可能是一个不错的选择。

2. onApplicationBootstrap

onApplicationBootstrap() 在应用程序启动完成后调用,但在HTTP服务器监听端口之前。这允许你在应用启动但还未开始接受HTTP请求时执行代码。

3. Middleware

中间件可以拦截进入应用的请求,并在请求被路由到相应的控制器之前执行代码。

4. 拦截器 (Interceptors)

拦截器可以在请求到达控制器之前和之后执行,通常用于修改请求/响应对象。

5. 守卫 (Guards)

守卫是在请求到达控制器之前检查某些条件是否满足,常用于权限控制。

触发顺序:main.ts (方法自定义)-> onModuleInit -> onApplicationBootstrap -> Middleware -> guard -> intercept

posted @ 2024-07-22 10:57  PrintY  阅读(6)  评论(0编辑  收藏  举报