目录
自动验证,序列化与异常处理
学习目标
- 全局自动数据验证管道
- 全局数据序列化拦截器
- 全局异常处理过滤器
文件结构
本节内容主要聚焦于CoreModule
src/modules/core
├── constants.ts
├── core.module.ts
├── decorators
│ ├── dto-validation.decorator.ts
│ ├── index.ts
│ └── repository.decorator.ts
├── helpers.ts
├── providers
│ ├── app.filter.ts
│ ├── app.interceptor.ts
│ ├── app.pipe.ts
│ └── index.ts
└── types.ts
应用编码
本节中用到一个新的Typescript
知识点-自定义装饰器和matedata
,详细使用请查看我写的一篇相关文章
装饰器
添加一个用于为Dto
构造metadata
数据的装饰器
// src/core/decorators/dto-validation.decorator.ts
export const DtoValidation = (
options?: ValidatorOptions & {
transformOptions?: ClassTransformOptions;
} & { type?: Paramtype },
) => SetMetadata(DTO_VALIDATION_OPTIONS, options ?? {});
验证管道
自定义一个全局的验证管道(继承自Nestjs
自带的ValidationPipe
管道)
代码: src/core/providers/app.pipe.ts
大致验证流程如下
- 获取要验证的dto类
- 获取
Dto