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

controller 接受的参数是 vo 还是 dto

  •  
  •   muyunn · 2020-05-14 18:15:22 +08:00 · 13222 次点击
    这是一个创建于 1657 天前的主题,其中的信息可能已经有所发展或是发生改变。

    有没有代码比较规范的 java 后端开源项目

    49 条回复    2021-10-18 14:38:08 +08:00
    chendy
        1
    chendy  
       2020-05-14 18:22:12 +08:00
    controller 的参数用于前后端数据传输,所以是 dto
    asAnotherJack
        2
    asAnotherJack  
       2020-05-14 18:35:15 +08:00
    无知的我悄悄打开搜索引擎查了一下 vo 和 dto 是什么意思
    tangzh55
        3
    tangzh55  
       2020-05-14 18:38:02 +08:00   ❤️ 2
    po 对应表结构一一对应,vo 在表结构基础字段上增减个性化的返回给前端,dto 在表结构基础字段上增减个性化的用于入参
    我们是这样的
    muyunn
        4
    muyunn  
    OP
       2020-05-14 18:39:44 +08:00
    哈哈哈
    muyunn
        5
    muyunn  
    OP
       2020-05-14 18:40:05 +08:00
    @asAnotherJack 哈哈哈
    muyunn
        6
    muyunn  
    OP
       2020-05-14 18:40:34 +08:00
    @chendy 我看到有人说是 vo,糊涂了
    muyunn
        7
    muyunn  
    OP
       2020-05-14 18:40:50 +08:00
    @tangzh55 好的,就按照你说的来
    IMCA1024
        8
    IMCA1024  
       2020-05-14 18:42:47 +08:00   ❤️ 2
    emm 。。
    我们是 Controller 接收 XXRequest 类
    然后在 Controller 转成 XXDTO 给 Service
    Service 传 DTO 给 Mapper
    Service 返回 VO 给 controller
    controller 最终返回 XXResponse
    jinzhongyuan
        9
    jinzhongyuan  
       2020-05-14 18:42:50 +08:00
    codergrowing
        10
    codergrowing  
       2020-05-14 18:43:35 +08:00 via Android
    参数我们都是叫* Param,VO 是给前端返回的数据,DTO 仅使用于 service 层
    luckyrayyy
        11
    luckyrayyy  
       2020-05-14 18:43:39 +08:00 via iPhone
    我 controller 入参出参都用的 vo……
    muyunn
        12
    muyunn  
    OP
       2020-05-14 18:48:14 +08:00
    @IMCA1024 转糊涂了快😂
    125113483
        13
    125113483  
       2020-05-14 18:57:44 +08:00
    View Object 和 Data Transfer Object 视图对象 就是把页面的参数封装起来 和数据传输对象 就是用于展示层和服务层之间转换。用于 service 层的
    xlui
        14
    xlui  
       2020-05-14 19:19:47 +08:00
    我们一般 rpc 接口用的是 dto,controller 倒是没见过 dto 的用法,vo 居多
    mmdsun
        15
    mmdsun  
       2020-05-14 19:29:50 +08:00 via Android
    Spring Data REST 做的。不过我一直都是直接用实体。
    不知道这样会有什么问题吗?

    主要是不想搞太多 dto,vo (实体从头用到尾。
    xy90321
        16
    xy90321  
       2020-05-14 19:55:09 +08:00 via iPhone
    我司项目里一般管 VO 叫 WebDTO 👻
    peyppicp
        17
    peyppicp  
       2020-05-14 19:59:27 +08:00
    ***Request
    ***Response

    Golang :)
    watzds
        18
    watzds  
       2020-05-14 20:03:53 +08:00 via Android
    VO 到底是 value object 还是 view object ?
    Service 用 DTO 吗
    还有转来转去头疼啊
    freebird1994
        19
    freebird1994  
       2020-05-14 20:06:34 +08:00 via Android
    我们 dto 只用于 rpc 传输,没有 controller 所以没有 vo
    xizismile
        20
    xizismile  
       2020-05-14 20:09:19 +08:00 via Android
    都可以呀,只要这个规范在你们的开发团队统一就行
    v2hh
        21
    v2hh  
       2020-05-14 20:56:27 +08:00
    请求**Request,响应**Response,传输 DTO
    jorneyr
        22
    jorneyr  
       2020-05-14 21:11:24 +08:00
    我们全部是 xxx.bean.Xyz 一把梭,不分 vo dto 等
    gowk
        23
    gowk  
       2020-05-14 21:52:06 +08:00 via Android
    @IMCA1024 传来传去的,不累吗
    coer
        24
    coer  
       2020-05-14 21:59:20 +08:00 via iPad
    我们这 controller 接受的一般叫**param,发给前端的是 vo,dto 用在 service,mapper 查出来的是 model
    voidxx
        25
    voidxx  
       2020-05-14 23:44:37 +08:00 via iPhone
    鄙人习惯用 xxForm,代表表单
    optional
        26
    optional  
       2020-05-14 23:47:35 +08:00 via Android
    叫 xxxRequest 或者 xxInput
    charlie21
        27
    charlie21  
       2020-05-14 23:51:53 +08:00
    muskill
        28
    muskill  
       2020-05-15 08:18:12 +08:00 via iPhone
    @IMCA1024 多此一举啊,直接 DTO,VO 不就完了
    JRay
        29
    JRay  
       2020-05-15 09:17:36 +08:00
    @tangzh55 我目前也是这么使用的,有时候 DTO 和 VO 字段一样就直接重用了
    york7
        30
    york7  
       2020-05-15 09:51:16 +08:00
    我们这边是这样
    DO ( Data Object ):与数据库表结构一一对应,通过 DAO 层向上传输数据源对象。
    DTO ( Data Transfer Object ):数据传输对象,Service 或 Manager 向外传输的对象。
    VO ( View Object ):显示层对象,通常是 Web 向模板渲染引擎层传输的对象。
    vitoliu
        31
    vitoliu  
       2020-05-15 11:04:47 +08:00   ❤️ 1
    后端给前端 VO,前端给后端 DTO
    qW7bo2FbzbC0
        32
    qW7bo2FbzbC0  
       2020-05-15 11:07:52 +08:00
    我写 C#时习惯命名为 XXXGetModel,XXXPatchModel,XXXPostModel,XXXModel
    qW7bo2FbzbC0
        33
    qW7bo2FbzbC0  
       2020-05-15 11:08:38 +08:00
    响应的话,则是 XXXResponseModel,如果简单点直接就是数据表本身 XXXModel
    cruii
        34
    cruii  
       2020-05-15 11:34:12 +08:00
    我也因为这个纠结半个月了,也没找到按照这种开发模型的项目
    zhuweiyou
        35
    zhuweiyou  
       2020-05-15 12:08:35 +08:00
    HashMap 一把梭
    muyunn
        36
    muyunn  
    OP
       2020-05-15 13:37:05 +08:00 via iPhone
    @zhuweiyou 哈哈哈,老哥,头铁的很啊
    muyunn
        37
    muyunn  
    OP
       2020-05-15 13:37:36 +08:00 via iPhone
    @cruii 是啊,想找个开源项目看看,结果一个都没有
    cfcheng503
        38
    cfcheng503  
       2020-05-15 13:41:22 +08:00
    bo 呢
    Foxkeh
        39
    Foxkeh  
       2020-05-15 14:03:26 +08:00   ❤️ 1
    mazai
        40
    mazai  
       2020-05-15 14:12:50 +08:00
    controller 接收的肯定是 VO 对象啊,传给 S 层的是 DTO
    ychost
        41
    ychost  
       2020-05-15 15:05:46 +08:00
    没必要 O,一般 DO 可以上,其余的看心情吧
    xuanbg
        42
    xuanbg  
       2020-05-15 15:33:31 +08:00
    严格地讲,接收的参数是 dto,返回的数据是 vo 。但我们有时候图省事就是一个 dto……
    wushigejiajia01
        43
    wushigejiajia01  
       2020-05-15 15:41:44 +08:00 via Android
    这个我去年也纠结过一阵,但是网上搜索没找到啥有用的信息

    最终得出的结论是:只要项目组内部统一用法就完事,这个没有啥规定

    早期项目,我都没用过啥 O

    某些时候,这个转来转去的,麻烦的很
    slyang5
        44
    slyang5  
       2020-05-15 21:05:38 +08:00
    @IMCA1024 你这个很规范了。 嘻嘻
    kylix
        45
    kylix  
       2020-05-15 21:25:49 +08:00
    偷偷的收藏下。。。
    tairan2006
        46
    tairan2006  
       2020-05-15 21:53:41 +08:00 via Android
    组内统一就行
    EminemW
        47
    EminemW  
       2020-05-16 11:49:36 +08:00
    我想知道 pojo 用在什么地方。。还有以 entity 命名的
    muyunn
        48
    muyunn  
    OP
       2020-05-17 00:36:37 +08:00
    @EminemW POJO(Plain Ordinary Java Object): 在本规约中,POJO 专指只有 setter/getter/toString 的 简单类,包括 DO/DTO/BO/VO 等。entity 属于 DO(Data Object).---阿里 java 开发手册
    a68UkLHpycW7ImyV
        49
    a68UkLHpycW7ImyV  
       2021-10-18 14:38:08 +08:00
    最清晰的还是 xxRequest,xxResponse 。
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   5464 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 34ms · UTC 09:13 · PVG 17:13 · LAX 01:13 · JFK 04:13
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.