Nest 初体验
初始化项目
1 |
|
文件概览
src/main.ts 入口文件
1 |
|
入口文件,通过 NestFactory 创建一个 Nest 应用实例,并且监听 3000 端口。
控制器
创建控制器命令:nest g controller [name]
接收请求的地方,通过类和装饰器对元数据进行关联。
在 constructor 中注入 service,@Get 表明这是一个 Get 请求,可以在 Get 中添加路径。其他请求方式包括 @Post、@Delete、@Put 等。
可能用到的装饰件器
@Controller
定义控制器,另外可以传入路由路径前缀。
@Param(param?: string)
1 |
|
@Params 可以获取到路径中的参数对象,可传入属性名表示获取该属性的值。
@Body(param?: string)
@Body 获取的请求体中的参数对象,可传入属性名表示获取该属性的值
@Query(param?: string)
@Query 获取的时 url 上的 query 对象,例如 xxx?name='xxx'
,另外可传入属性名表示获取该属性的值
提供器
服务层,在该层处理业务逻辑
可能用到的装饰器
@Injectable()
将该类标记为提供器
InjectRepository()
将实体类的 repository 注入到 userRepository 属性中,在 service 层中调用 userRepository 进行数据库操作。
模块
创建命令:nest g module name
每个应用至少会有一个模块,即根模块,模块将控制器、提供器、相关组件
1 |
|
- providers:将由 Nest 注入器实例化并且至少可以在该模块中共享的提供程序
- controllers:此模块中定义的必须实例化的控制器集
- imports:导出此模块所需的提供程序的导入模块列表
- exports:这个模块提供的 providers 的子集应该在导入这个模块的其他模块中可用。你可以使用提供器本身或仅使用其令牌(provide 值)
模块是构建应用图的起点,
异常过滤器
抛出异常
1 |
|
Nest 内置了 HttpException 类用来抛出异常,第一个参数是返回的 message,第二个参数是状态码,HttpStatus
是一个保存了 {错误类型: 错误码}
的对象,例如你可以通过
1 |
|
返回
1 |
|
异常过滤器
这是官网提供的异常过滤器
绑定过滤器
通过 @UseFilters(new HttpExceptionFilter()) 来给控制层的接口添加异常过滤器
连接数据库
第一步:安装依赖
1 |
|
第二步:连接数据库
在根目录的 app.module.ts 中,配置自己的数据库。
Nest 初体验
https://l1ushun.github.io/2024/04/02/nest-01/