본문 바로가기
Programming/Spring

Api 응답 객체 만들기

by peter paak 2020. 7. 15.
728x90

rest api를 작성하면서 api 인터페이스의 응답을 확장가능하도록 만들기 위한 응답 객체를 생성해보겠습니다.

대표적으로 사용하는 응답객체는 ResponseEntity가 존재합니다. api의 응답에 대한 상태(status), 내용(body), 헤더(header) 정보들을 담을 수 있습니다.

public class ResponseEntity extends HttpEntity {

    private HttpHeaders headers;
    private T body;
    private Object status;
}

기존에는 해당 내용을 그대로 사용하였지만 회사마다 각각의 응답 프로토콜이 다르다는 것을 알게 되었습니다. 오늘은 회사에서 사용하는 코드를 조금 변형하여서 프로젝트에 적용해보도록 하겠습니다.

Response

public interface Response<T> {

    static <T> Response<T> of(String code, T data) {
        return new TypeResponse<>(code, data);
    }

    static <T> Response<T> of(T data) {
        return  new TypeResponse<>("200", data);
    }

    String getStatus();

    T getData();

    LocalDateTime getTimestamp();
}

TypeResponse

public class TypeResponse<T> implements Response<T> {

    private String status;
    private T data;
    private LocalDateTime timestamp;

    public TypeResponse(String status, T data) {
        this.status = status;
        this.data = data;
        this.timestamp = LocalDateTime.now();
    }

    @Override
    public String getStatus() {
        return status;
    }

    @Override
    public T getData() {
        return data;
    }

    @Override
    public LocalDateTime getTimestamp() {
        return timestamp = LocalDateTime.now();
    }

}
728x90