我正在使用Spring Boot项目,作为我的工具,几乎每个API都有请求和响应类。
例如:
@Data
@AllArgsConstructor
public class AddNoticeRequest{
private String subject;
private String message;
private Long timeToLive;
}
请求和响应类如下所示:
// Ommiting some annotations for brevity
public class AddNoticeResponse{
private String subject;
private String message;
private Long timeToLive;
private Date createTime;
private String creator;
}
Notice
我有两个问题。
例如:有两种Email
:Notification
和public class Email {
private String subject;
private String message;
private String receiver;
}
:
public class AddNoticeRequest {
private String subject;
private String message;
class Email extends AddNoticeRequest{
private String receiver;
}
}
那么,我应该使用扩展公共类的内部类还是只将所有字段放入一个类中?哪个更好?
public class AddNoticeRequest{
private String subject;
private String message;
private Long timeToLive;
private String receiver;
}
Email
然后,当客户端执行添加 <RelativeLayout
android:layout_width="match_parent"
android:layout_height="match_parent">
//Your first xml (main) layout here
<LinearLayout
android:id="@+id/layout"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:background="#FFD6DD"
android:gravity="center">
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="Sample Slide"
android:textColor="#FF5656"
android:textSize="22sp"
android:textStyle="bold" />
</LinearLayout>
//Your second xml (overlay) layout here. this may be relative/linear layout
<RelativeLayout
android:id="@+id/overlay"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:background="#88888888"
android:gravity="center"
android:visibility="gone" />
</RelativeLayout>
通知的请求时,某些字段是否为空?
答案 0 :(得分:11)
从长远来看,使用量身定制的DTO进行请求和响应将为您提供更大的灵活性。实际上,没有什么能阻止你使用继承和内部类,但我会避免它。
我已经回答了类似的问题here,强调了在REST API中使用DTO而不是持久性实体的好处。您将在下面找到这种方法的一些好处:
@XmlTransient
和@JsonIgnore
等注释来避免某些属性的序列化。@ApiModel
和@ApiModelProperty
注释来记录您的API模型,而不会弄乱您的持久性实体; 答案 1 :(得分:1)
不要对req / resp对象进行子类化。
在框架工作中使用像Jackson这样的auto de / serialiser将消息有效负载转换为业务对象。
但是,您仍将使用大量业务对象。
答案 2 :(得分:0)
我建议您使用 JSON 格式,而不是每次创建类并返回其实例。但是,如果你需要一个类层次结构,你可以创建一个类并放置一个存储JSON的变量。