如何解决 dto input output 数量太多的问题

2022-04-21 09:51:11 +08:00
 zhangleshiye

比如我一个表接口 crud ,要出来 4 个 input 4 个 output , 后端有没啥减少一些这些对象的办法,像 typescript 那种一样, 通过 omit partial 这些约束, 但是有些表单验证又是在 input 里面。

2240 次点击
所在节点    Web Dev
5 条回复
thinkershare
2022-04-21 09:55:08 +08:00
你不说语言, 谁知道你用的啥?
qshu
2022-04-21 09:58:05 +08:00
你可以采用 GraphQL 来收束 CRUD 的类型,GraphQL 就是用来解决这个传输时的输入输出传输时对象的
GraphQL https://graphql.org/
ApolloGraphQL https://www.apollographql.com/
zhangleshiye
2022-04-21 10:06:47 +08:00
zhangleshiye
2022-04-21 10:08:40 +08:00
@qshu 没用过 项目还是已 restful 为主..
thinkershare
2022-04-21 12:36:55 +08:00
应用层按照功能尽可能的多公开数据, 一个模型就不会有太多 dto, 正常情况下就只会有 CreateEntityDto, UpdateEntityDto 和 EnttityDto, 为了节省带宽按需求获取部分参数, 则在上面包一层 GraphQL, 验证的逻辑安全可以不写到 Dto 上, 而是直接使用 Fluent Validation API 使用代码定义, 而不是总是使用 Atttribute, 即便使用 Atttribute, 也不应该对 Dto 做逻辑校验, 一般只做简单的数据格式校验, 这种情况, 重复写多次 Attribute 并不是什么问题, 另外你也可以给 Dto 分层, 使用继承和泛型组合. C#类型运算太弱了, 几乎等于没有, 没法像 TypeScript 那样领域, TypeScript 的类型运算骚操作太多, 对于 C#这种纯静态语言(不考虑 DLR), 按照 TS 的逻辑写肯定是不大行得通的

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/848286

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX