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

2022-10-20 09:44:05 +08:00
 silencil

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

2026 次点击
所在节点    Java
11 条回复
ediron
2022-10-20 09:53:32 +08:00
我现在是践行的每个接口单独定义,哪怕只差一个字段,这样虽然代码可能有点冗余,但很松耦合方便维护,其实也是为了符合单一职责原则
silencil
2022-10-20 10:04:14 +08:00
@ediron 嗯 是个取舍问题,之前考虑产生的各种模型太多,新增和更新接口就都用同一个了,发现搞的最后有点复杂,注解一大堆。不过模型多不太好维护就是,数据库改个字段,各个模型都要改一遍。
pannanxu
2022-10-20 10:07:19 +08:00
这种情况可以考虑 RestFul 风格 API

修改 PUT:/resources/{id}

新增 POST:/resources

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

列表 GET:/resources
silencil
2022-10-20 10:09:01 +08:00
@pannanxu 噢噢 受教了,是单独提出 ID 这个入参是吗?感谢!
Jooooooooo
2022-10-20 10:10:04 +08:00
如果操作的是同一个实体类可以用相同的 vo, 要不然以后加字段, 各个 vo 都得加.
jeesk
2022-10-20 12:25:21 +08:00
花样太多, 必须很多用 spring 的,用 group 分组字段, 表面可以公用,其实还不错一个接口一个 class 。
jeesk
2022-10-20 12:27:28 +08:00
楼上已经说得很好了
857681664
2022-10-20 14:09:35 +08:00
可以用 restful 的接口风格区分新增和更新,payload 公用在代码上比较省事,就是更新单个字段时请求体会比较大
hdfg159
2022-10-20 14:35:57 +08:00
按照 1 楼说的
RedBeanIce
2022-10-20 19:38:38 +08:00
按照 1 楼说的
lsry
2022-10-21 07:47:25 +08:00
按照 1 楼说的

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

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

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

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

© 2021 V2EX