比如我一个表接口 crud ,要出来 4 个 input 4 个 output , 后端有没啥减少一些这些对象的办法,像 typescript 那种一样, 通过 omit partial 这些约束, 但是有些表单验证又是在 input 里面。
1
thinkershare 2022-04-21 09:55:08 +08:00
你不说语言, 谁知道你用的啥?
|
2
qshu 2022-04-21 09:58:05 +08:00
你可以采用 GraphQL 来收束 CRUD 的类型,GraphQL 就是用来解决这个传输时的输入输出传输时对象的
GraphQL https://graphql.org/ ApolloGraphQL https://www.apollographql.com/ |
3
zhangleshiye OP @thinkershare C#
|
4
zhangleshiye OP @qshu 没用过 项目还是已 restful 为主..
|
5
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 的逻辑写肯定是不大行得通的
|