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
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 分享4款.NET开源、免费、实用的商城系统
· 全程不用写代码,我用AI程序员写了一个飞机大战
· MongoDB 8.0这个新功能碉堡了,比商业数据库还牛
· 白话解读 Dapr 1.15:你的「微服务管家」又秀新绝活了
· 上周热点回顾(2.24-3.2)