V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
zhangleshiye
V2EX  ›  Web Dev

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

  •  
  •   zhangleshiye · 2022-04-21 09:51:11 +08:00 · 1946 次点击
    这是一个创建于 707 天前的主题,其中的信息可能已经有所发展或是发生改变。

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

    5 条回复    2022-04-21 12:36:55 +08:00
    thinkershare
        1
    thinkershare  
       2022-04-21 09:55:08 +08:00
    你不说语言, 谁知道你用的啥?
    qshu
        2
    qshu  
       2022-04-21 09:58:05 +08:00
    你可以采用 GraphQL 来收束 CRUD 的类型,GraphQL 就是用来解决这个传输时的输入输出传输时对象的
    GraphQL https://graphql.org/
    ApolloGraphQL https://www.apollographql.com/
    zhangleshiye
        3
    zhangleshiye  
    OP
       2022-04-21 10:06:47 +08:00
    zhangleshiye
        4
    zhangleshiye  
    OP
       2022-04-21 10:08:40 +08:00
    @qshu 没用过 项目还是已 restful 为主..
    thinkershare
        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 的逻辑写肯定是不大行得通的
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   我们的愿景   ·   实用小工具   ·   3283 人在线   最高记录 6543   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 26ms · UTC 14:14 · PVG 22:14 · LAX 07:14 · JFK 10:14
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.