java - 同一实体的多个数据传输对象 (DTO)
问题描述
(对不起,我的英语不好)。我对同一个实体使用多个 DTO。
例如,我的实体:
@Data
@AllArgsConstructor
@NoArgsConstructor
@Entity(name = "users")
public class User {
@Id //(with uuid generator)
private UUID id;
private String firstName;
private String lastName;
private String password;
private String phoneNumber;
private Attachment photo;
}
问题是请求和响应不一样。例如,要注册,用户必须输入firstName
、lastName
、password
和phoneNumber
。但不是id
and photo
(文件)。我编写了另一个适用于附件
的 API,我返回用户如下:
{
"id": "c37f5b13-0698-41c8-a439-212484935567",
"firstName": "John",
"lastName": "Doe",
"phoneNumber": "123456789",
"photoUrl": "/api/attachment/3ac27460-1c60-11ec-9621-0242ac130002"
}
和我的 DTO:
public class UserDto {
@Data
public static class SignUpParams {
private String firstName;
private String lastName;
private String password;
private String phoneNumber;
}
@Data
public static class SignInParams {
private String password;
private String phoneNumber;
}
@Data
public static class ResponseParams {
private UUID id;
private String firstName;
private String lastName;
private String phoneNumber;
private String photoUrl;
}
@Data
public static class BlaParams {
// Just the fields I want
}
}
我认为这种方法不会返回不必要的 null 值,也不会显示在 Swagger Api Docs 中。
将嵌套类用于 dtos 是否正确和最佳实践?还是有其他更好的选择?
解决方案
推荐阅读
- angular - 如何在展示性内容之外使用异步管道?
- r - 求一个变量的均值,取决于另一个变量,按第三个分组
- html - HTML 缩小会扼杀阅读器视图?
- shell - 运行 start-hbase.sh 时出现“Bad Substitution”错误
- javascript - 是否有关于如何从 NodeJS CJS + Babel 迁移到 NodeJS MJS 的策略?
- python - 时间序列上的缺失数据
- jenkins - Jenkinsfile:修剪选择参数并将其传递给阶段
- jmeter - 使用Jmeter工具获取下一个进程id实例
- java - 使用 Stack 求解字符串表达式
- c# - 暂停/排队操作/事件/委托