前置笔记:
在ABP框架里,后端写完规定的DTO,是可以通过 “abp generate-proxy”,命令生成相对应的DTO给前端所使用。
注意:
1.后端的DTO写在应用约定层 application contracts
2.后端DTO写完之后。重新运行httpApiHost,起一个swagger。
3.这时候你在swagger中,就可以看见你更改的DTO了。
4.切到前端,运行abp generate-proxy(Angular项目的根目录下),在项目文件中有个“proxy” 的文件夹,下面存放生成的DTO。已经export了,供前端使用。
这边有个思考,为什么要定义这么多的DTO,都只为一个Entity服务?
1 什么是Dto? 数据传输对象(DTO)(Data Transfer Object),是⼀个以不具有任何⾏为除了存储和检索的数据(访问和存取器)。
2 Dto的作⽤? 为何不直接使⽤实体对象. 最⼤的好处是Dto不会像实体⼀样暴露出所有的属性, ⽐如createby, createdate 这些字段,并不需要前端处理, 这样就能尽量的减少出错的机会,也⾮常安全. ⽐如只允许更新⼀个字段,那dto就只有⼀个字段,这样想更新其他的都做不到.
3 ABP已经集成了AutoMapper, 按照官⽅⽂档使⽤即可
2023/5/6
new issue:
需要前后端保证ABP CLI版本一致,记得删除前端modules文件夹,重新跑npm
另外,关闭前端后再跑生成proxy的命令。存在前端关闭后仍然占用进程导致生成失败的问题