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