[Spring] 통합 ResponseDTO로 데이터 + 예외처리 담기.

손성우·2022년 8월 17일
0

스프링

목록 보기
9/9

통합 ResponseDto로 성공과 실패의 결과값을 담아 Response로 넘겨주고자 한다.

ResponseDto


@Getter
@AllArgsConstructor
public class ResponseDto<T>{

	private boolean success;
    private T data;
    private Error error;
    
    public static <T> ResponseDto<T> success(T data) {
    return new ResponseDto<>(true, data, null);
  }

  public static <T> ResponseDto<T> fail(String code, String message) {
    return new ResponseDto<>(false, null, new Error(code, message));
  }
 
 @Getter
  @AllArgsConstructor
  static class Error {
    private String code;
    private String message;
  }
}

위처럼 성공시 true와 data로 어떠한 데이터도 담을 수 있게 필드를 선언한다.
실패시 false와 직접작성한 code와 message를 담은 error를 담을 수 있게 필드를 선언한다.

예외처리

예외처리를 할 때 바로 response에 응답 메세지를 담고 싶은 경우에 사용된다.
자바객체와 JSON사이에 형변환을 위한 ObjectMapper를 사용하기 위해 Jackson라이브러리를 다운받는다.

build.gradle

// https://mvnrepository.com/artifact/com.fasterxml.jackson.core/jackson-databind
implementation 'com.fasterxml.jackson.core:jackson-databind:2.12.3'

 response.setContentType("application/json;charset=UTF-8");
    response.getWriter().println(
        new ObjectMapper().writeValueAsString(
            ResponseDto.fail("BAD_REQUEST", "로그인이 필요합니다.")
        )
    );
    response.setStatus(HttpServletResponse.SC_UNAUTHORIZED); // 401,402 같은 에러코드를 담음
profile
백엔드 개발자를 꿈꾸며 공부한 내용을 기록하고 있습니다.

0개의 댓글