当前位置: 首页 > 知识库问答 >
问题:

设计Spring Restful DTO时列重复的问题

丁宏浚
2023-03-14

我最近在学习DTO。其中,请求DTO可以通过多种方式创建。作为一个例子,我们将举两个与用户相关的创建和更新示例。

要创建一个用户,假设它需要姓名、性别、年龄、电话号码。

然后我的UserCreateRequest estDTO将由一个表单组成,该表单接收姓名、性别、年龄、电话号码作为参数。

@Getter
public class UserCreateRequestDTO {
    private String name;
    private String sex;
    private String age;
    private String phoneNumber;

    ... etc ()
}

接下来,我们将编辑用户信息。性别,年龄,没有名字的电话号码,比如说你可以编辑它。

如果是这样,我的UserUpdateRequestDTO将由接收性别、年龄和电话号码作为参数组成。

@Getter
public class UserUpdateRequestDTO {
    private String sex;
    private String age;
    private String phoneNumber;

    ... etc ()
}

到目前为止,这两个应用领域非常相似。

有问题,看起来你在写不必要的代码。

如果是这样,我有一个问题要总结一下,或者清除错误的部分。

  1. 统一两个相似的requestDTO并将它们用作一个requestDTO是否不好?(一个requestdto方法处理所有创建和更新信息。)
@Getter
    public class UserRequestDTO {
        private String name;
        private String sex;
        private String age;
        private String phoneNumber;
        private String etc;

        ... etc
    }
    @Getter
    public class UserCreateRequestDTO {
        private User user;

        ... etc
    }

    @Getter
    public class UserUpdateRequestDTO {
        private User user;

        ... etc
    }

    ////
    
    
    @Getter
    @Setter
    public class User {
        private String name;
        private String sex;
        private String age;
        private String phoneNumber;
    }

换句话说,您想知道何时需要创建更多请求DTO,以及是否可以重复使用它们。

共有2个答案

南门飞
2023-03-14

不同的数据有不同的用途,它们的名字告诉你该怎么做。为了更好地维护和测试,您不必更改一个endpoint来影响另一个endpoint。我也讨厌将DTO复制到属性,但开源工具可以缓解这些症状。干杯

壤驷安和
2023-03-14

根据我的个人经验,我更喜欢晶莹剔透的分离DTO。它会让你以后的生活绝对更轻松。它还需要更多重复和无聊的代码,但最终它可以很容易地测试和维护。它允许你的接口/服务独立变化。

如中所述https://medium.com/@schneidenbach/restful-api-best-practices-and-common-pittles-7a83ba3763b5

我喜欢把事情简单化。每个控制器(有时是endpoint,取决于需要)都有自己的DTO,用于处理请求。我的GET通常会返回数据的子集,PUTs/POST仅限于更新我想要更新的字段。这对您和您的API消费者来说是非常清楚和简单的,同时还强制在实体和DTO之间分离关注点。

 类似资料:
  • 我写了这段代码,我在《Python for dummies》一书中找到了这段代码 它应该打印10 9 8 7 6 5 4 3 2 1Blastoff! 当我运行程序时,我得到一个错误“调用打印时缺少括号” 在youtube上,我发现了一个类似的代码,从0到10000000。这个很好用。 为什么它们看起来如此不同?我需要什么样的基础知识才能理解这一点?这是不同python版本的问题吗?《Python

  • 自从我建立并开始运行应用程序上iOS10模拟器,我开始得到日志,如: 想知道我怎么修好它们吗?我从未在XCode 7上见过这些。

  • 我有一个df,看起来像: 作为pd进口熊猫 df df

  • 我有一个数据框(泰坦尼克号乘客列表中的28行),其中有一列“性别”,包含两个值,“男性”、“女性”。我想知道男性/女性的数量 输出应在第二列中以行标签(索引)和计数(男性/女性)的形式显示“性别” 这将返回一个"ValueError: Grouper for'sex'not 1维"错误。 请引导

  • 我尝试运行上述代码。但它不更新字符串。并且不显示任何错误。数据帧中存在“ABW”数据点。我也给出了数据集的链接。https://github.com/pran9957/world-bank-data.git