之前是撸 DRF 那一套的,一般 API 的参数验证和数据返回都可以用 Serializer 来实现。
看了 nestjs 之后发现
我在想如果我改成下面的命名是否可以
1
encro 2022-09-22 12:01:57 +08:00
参数输入和输出都可以用 dto,dto 的全称是 data transfer object 。
你那个软件包是什么意思,建议详细了解 middleware 这一章。 validator 是对对象进行验证,可以得到错误信息, transfermer 是对对象进行转换。 |
2
233373 OP @encro 我看官网的文档验证 https://docs.nestjs.com/techniques/validation 和序列化 https://docs.nestjs.com/techniques/serialization
我没太搞懂 dto 和 entity 的应用场景,对于 rest api 来说,只有输入和输出,不考虑异常的情况下 |
3
lzgshsj 2022-09-22 13:48:52 +08:00
你起啥名都无所谓啊,我是入参用的.dto.ts ,返回用的.vo.ts ,文件名不影响什么。
如果非要说影响,那就是 swagger 的自动生成需要改一下参数而已 https://docs.nestjs.com/openapi/cli-plugin#using-the-cli-plugin |
5
encro 2022-09-22 13:51:42 +08:00
可以理解 dto 只是为了方便自动输出文档。
通常 entity 是和数据库打交道,定义的是数据库字段, dto 是和输入输出打交道,定义输入输出格式字段。 你看到返回是 entity ,只是恰好需要返回数据库所有字段而已。 validator ,transformer 都是 middleware ,validator 用来处理输入,验证输入格式是否符合规范,transformer 用于将输出对象转换成规定格式。 所有,都按照英文基本意思来理解就可以了,先不用考虑那么多,上手做一两个项目慢慢掌握。 |
7
lmshl 2022-09-22 15:40:11 +08:00
validator 和 transformer 是不分家的,你用 validator 必然要用到 transformer ,除非你不写 nested struct
例子: https://github.com/mingyang91/ticketing/blob/master/src/models.ts#L12 |