[请教] 每个接口都要一个 VO 吗?例如新增和更新只有主键 ID 不同的情况下 - V2EX
V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
silencil
V2EX    Java

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

  •  
  •   silencil 2022 年 10 月 20 日 2741 次点击
    这是一个创建于 1284 天前的主题,其中的信息可能已经有所发展或是发生改变。

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

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

    修改 PUT:/resources/{id}

    新增 POST:/resources

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

    列表 GET:/resources
    silencil
        4
    silencil  
    OP
       2022 年 10 月 20 日
    @pannanxu 噢噢 受教了,是单独提出 ID 这个入参是吗?感谢!
    Jooooooooo
        5
    Jooooooooo  
       2022 年 10 月 20 日
    如果操作的是同一个实体类可以用相同的 vo, 要不然以后加字段, 各个 vo 都得加.
    jeesk
        6
    jeesk  
       2022 年 10 月 20 日
    花样太多, 必须很多用 spring 的,用 group 分组字段, 表面可以公用,其实还不错一个接口一个 class 。
    jeesk
        7
    jeesk  
       2022 年 10 月 20 日
    楼上已经说得很好了
    857681664
        8
    857681664  
       2022 年 10 月 20 日
    可以用 restful 的接口风格区分新增和更新,payload 公用在代码上比较省事,就是更新单个字段时请求体会比较大
    hdfg159
        9
    hdfg159  
       2022 年 10 月 20 日
    按照 1 楼说的
    RedBeanIce
        10
    RedBeanIce  
       2022 年 10 月 20 日
    按照 1 楼说的
    lsry
        11
    lsry  
       2022 年 10 月 21 日
    按照 1 楼说的
    关于     帮助文档     自助推广系统     博客     API     FAQ     Solana     2677 人在线   最高记录 6679       Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 56ms UTC 07:14 PVG 15:14 LAX 00:14 JFK 03:14
    Do have faith in what you're doing.
    ubao msn snddm index pchome yahoo rakuten mypaper meadowduck bidyahoo youbao zxmzxm asda bnvcg cvbfg dfscv mmhjk xxddc yybgb zznbn ccubao uaitu acv GXCV ET GDG YH FG BCVB FJFH CBRE CBC GDG ET54 WRWR RWER WREW WRWER RWER SDG EW SF DSFSF fbbs ubao fhd dfg ewr dg df ewwr ewwr et ruyut utut dfg fgd gdfgt etg dfgt dfgd ert4 gd fgg wr 235 wer3 we vsdf sdf gdf ert xcv sdf rwer hfd dfg cvb rwf afb dfh jgh bmn lgh rty gfds cxv xcv xcs vdas fdf fgd cv sdf tert sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf shasha9178 shasha9178 shasha9178 shasha9178 shasha9178 liflif2 liflif2 liflif2 liflif2 liflif2 liblib3 liblib3 liblib3 liblib3 liblib3 zhazha444 zhazha444 zhazha444 zhazha444 zhazha444 dende5 dende denden denden2 denden21 fenfen9 fenf619 fen619 fenfe9 fe619 sdf sdf sdf sdf sdf zhazh90 zhazh0 zhaa50 zha90 zh590 zho zhoz zhozh zhozho zhozho2 lislis lls95 lili95 lils5 liss9 sdf0ty987 sdft876 sdft9876 sdf09876 sd0t9876 sdf0ty98 sdf0976 sdf0ty986 sdf0ty96 sdf0t76 sdf0876 df0ty98 sf0t876 sd0ty76 sdy76 sdf76 sdf0t76 sdf0ty9 sdf0ty98 sdf0ty987 sdf0ty98 sdf6676 sdf876 sd876 sd876 sdf6 sdf6 sdf9876 sdf0t sdf06 sdf0ty9776 sdf0ty9776 sdf0ty76 sdf8876 sdf0t sd6 sdf06 s688876 sd688 sdf86