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

[请教] 每个接口都要一个 VO 吗?例如新增和更新只有主键 ID 不同的情况下

  •  
  •   silencil · 2022-10-20 09:44:05 +08:00 · 2189 次点击
    这是一个创建于 800 天前的主题,其中的信息可能已经有所发展或是发生改变。

    每个接口都需要定义一个 VO (入参)吗?例如新增和更新接口在新增时有些 ID 是不需要传的,我是用的同一个入参,校验的话用 spring 的分组校验,但是遇到个问题,输出的 Knif4j 文档上没法根据接口不同来针对性调整字段的展示。请教各位通常是怎么做的?

    第 1 条附言  ·  2022-10-20 10:21:28 +08:00
    再请教个问题:新增和更新对字段是否必须的要求不一定相同,在不同的情况下,输出的文档如何做到正确体现呢?是否可以这样做:新增的字段都是必须的,在更新时逻辑上是非必须的,但是要求必传,无变化传原值。
    11 条回复    2022-10-21 07:47:25 +08:00
    ediron
        1
    ediron  
       2022-10-20 09:53:32 +08:00   ❤️ 1
    我现在是践行的每个接口单独定义,哪怕只差一个字段,这样虽然代码可能有点冗余,但很松耦合方便维护,其实也是为了符合单一职责原则
    silencil
        2
    silencil  
    OP
       2022-10-20 10:04:14 +08:00
    @ediron 嗯 是个取舍问题,之前考虑产生的各种模型太多,新增和更新接口就都用同一个了,发现搞的最后有点复杂,注解一大堆。不过模型多不太好维护就是,数据库改个字段,各个模型都要改一遍。
    pannanxu
        3
    pannanxu  
       2022-10-20 10:07:19 +08:00   ❤️ 1
    这种情况可以考虑 RestFul 风格 API

    修改 PUT:/resources/{id}

    新增 POST:/resources

    查询详情 GET:/resources/{id}

    列表 GET:/resources
    silencil
        4
    silencil  
    OP
       2022-10-20 10:09:01 +08:00
    @pannanxu 噢噢 受教了,是单独提出 ID 这个入参是吗?感谢!
    Jooooooooo
        5
    Jooooooooo  
       2022-10-20 10:10:04 +08:00
    如果操作的是同一个实体类可以用相同的 vo, 要不然以后加字段, 各个 vo 都得加.
    jeesk
        6
    jeesk  
       2022-10-20 12:25:21 +08:00
    花样太多, 必须很多用 spring 的,用 group 分组字段, 表面可以公用,其实还不错一个接口一个 class 。
    jeesk
        7
    jeesk  
       2022-10-20 12:27:28 +08:00
    楼上已经说得很好了
    857681664
        8
    857681664  
       2022-10-20 14:09:35 +08:00
    可以用 restful 的接口风格区分新增和更新,payload 公用在代码上比较省事,就是更新单个字段时请求体会比较大
    hdfg159
        9
    hdfg159  
       2022-10-20 14:35:57 +08:00
    按照 1 楼说的
    RedBeanIce
        10
    RedBeanIce  
       2022-10-20 19:38:38 +08:00
    按照 1 楼说的
    lsry
        11
    lsry  
       2022-10-21 07:47:25 +08:00
    按照 1 楼说的
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   2826 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 25ms · UTC 06:22 · PVG 14:22 · LAX 22:22 · JFK 01:22
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.