在一个dto中合并请求dto和响应dto

问题描述 投票:0回答:1

我注意到我经常需要一个单独的DTO用于请求和响应,因为请求已经添加了验证约束,并且响应通常包含更多数据。

例如:

package be.ambrassade.jeugdlink.model.request;

import javax.validation.constraints.NotNull;
import javax.validation.constraints.Size;

public class AnswerRequest {
    @Size(min = 10, max = 1000)
    @NotNull
    private String message;


    public String getMessage() {
        return message;
    }

    public void setMessage(String message) {
        this.message = message;
    }
}

和:

package be.ambrassade.jeugdlink.model.response;

import java.sql.Timestamp;

public class AnswerResponse  {
    private int id;
    private String message;
    private UserResponse user;
    private Timestamp postedOn;
    private boolean chosen;
    private Short likes;
    private boolean userLikedAnswer;

    public int getId() {
        return id;
    }

    public void setId(int id) {
        this.id = id;
    }

    public String getMessage() {
        return message;
    }

    public void setMessage(String message) {
        this.message = message;
    }

    public UserResponse getUser() {
        return user;
    }

    public void setUser(UserResponse user) {
        this.user = user;
    }

    public Timestamp getPostedOn() {
        return postedOn;
    }

    public void setPostedOn(Timestamp postedOn) {
        this.postedOn = postedOn;
    }

    public boolean isChosen() {
        return chosen;
    }

    public void setChosen(boolean chosen) {
        this.chosen = chosen;
    }

    public Short getLikes() {
        return likes;
    }

    public void setLikes(Short likes) {
        this.likes = likes;
    }

    public boolean isUserLikedAnswer() {
        return userLikedAnswer;
    }

    public void setUserLikedAnswer(boolean userLikedAnswer) {
        this.userLikedAnswer = userLikedAnswer;
    }
}

有没有办法将它们组合在一个通用的DTO for Answers中,并且可能以这种或那种方式进行验证和属性过滤?我必须补充一点,数据库层生成了一些数据,例如id,postedOn timestamp等。

spring dto
1个回答
0
投票

我通常做的是拥有通用的请求和响应DTO,同时按照业务模型保留实体对象。在这种方法中,示例ResponseDTO将如下所示。

public class ResponseDTO {

//SUCCESS / FAILURE
private String status;
//failure message if any
private String message;

//response pay load. eg. AnswerDTO
private Object payload;


}
© www.soinside.com 2019 - 2024. All rights reserved.