Skip to content

Response

Jeonghun-Ban edited this page Apr 5, 2022 · 1 revision

BasicResponse

기본적인 Api Response를 처리하기 위한 Custom 객체로 아래와 같은 필드를 리턴한다.

  • status: Http 상태코드
  • message: 메시지
  • count: 리스트인 경우 갯수
  • data: 데이터(Object)

사용 예시

public ResponseEntity<BasicResponse> getAllUser() {
    List<User> userList = userService.getAllUser();

    return ResponseEntity.ok(BasicResponse.builder()
        .count(userList.size())
        .data(userList)
        .build());
  }

주의사항

  • status는 별도로 지정하지 않는다.
    • 기본적으로 HttpStatus.OK.value()200을 반환
  • 나머지 필드는 buildersetter를 이용하여 대입
    • 대입하지 않은 필드는 null값이 된다.
    • null값은 api 리턴되지 않도록 설정해두었다.
      • 해당 설정이 궁금하다면 여기를 참조

ExceptionResponse

예외처리 Api Response를 처리하기 위한 Custom 객체로 아래와 같은 필드를 리턴한다.

  • status
  • message

사용 방법

ApiExceptionEnum

ApiExceptionEnum에는 예외 처리에 사용되는 Enum들이 정의되어 있으며, 필요에 따라 커스텀 예외를 추가하면 된다.

public enum ApiExceptionEnum {
  // General Exception
  BAD_REQUEST_EXCEPTION(HttpStatus.BAD_REQUEST, "요청 변수를 확인해주세요."),
  UNAUTHORIZED_EXCEPTION(HttpStatus.UNAUTHORIZED, "인증이 실패하였습니다."),
  ACCESS_DENIED_EXCEPTION(HttpStatus.FORBIDDEN, "제한된 접근입니다."),
  NOT_FOUND_EXCEPTION(HttpStatus.NOT_FOUND, "요청 URL을 확인해주세요."),
  INTERNAL_SERVER_ERROR(HttpStatus.INTERNAL_SERVER_ERROR, "서버가 응답하지 않습니다."),

  // Custom Exception
  USER_NOT_FOUND_EXCEPTION(HttpStatus.NOT_FOUND, "유저를 찾을 수 없습니다."),
  EMAIL_DUPLICATION_EXCEPTION(HttpStatus.CONFLICT, "이미 존재하는 이메일입니다."),
  EXPIRED_TOKEN_EXCEPTION(HttpStatus.INSUFFICIENT_SPACE_ON_RESOURCE, "만료된 토큰입니다."), //419
  EXPIRED_REFRESH_TOKEN_EXCEPTION(HttpStatus.INSUFFICIENT_SPACE_ON_RESOURCE,
      "만료된 토큰입니다. 회원가입을 다시 시도하십시오."), //419
  NO_EXPIRED_TOKEN_EXCEPTION(HttpStatus.BAD_REQUEST, "만료되지 않은 토큰입니다."); //

ApiException

ApiExceptionApiExceptionEnum에서 정의한 예외를 처리한다. 사용하는 방법은 다음과 같다.

@PostMapping("/email-verification/create")
  public ResponseEntity<BasicResponse> createEmailVerification(
      @Valid @RequestBody EmailRequest email, BindingResult bindingResult) {

    if (bindingResult.hasErrors()) {
      throw new ApiException(ApiExceptionEnum.BAD_REQUEST_EXCEPTION);
    }

    if (emailService.isExist(email)) {
      throw new ApiException(ApiExceptionEnum.EMAIL_DUPLICATION_EXCEPTION);
    }

    emailService.createEmailVerification(email);

    return ResponseEntity.ok(
        BasicResponse.builder().message("send email verification success").build());
  }

ApiExceptionAdvice

ApiExceptionAdvice는 예외처리를 통해 전달된 메시지와 상태코드를 api response로 반환하는 클래스이다.

Clone this wiki locally