-
Notifications
You must be signed in to change notification settings - Fork 3
Response
Jeonghun-Ban edited this page Apr 5, 2022
·
1 revision
기본적인 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
을 반환
- 기본적으로
- 나머지 필드는
builder
나setter
를 이용하여 대입- 대입하지 않은 필드는 null값이 된다.
- null값은 api 리턴되지 않도록 설정해두었다.
- 해당 설정이 궁금하다면 여기를 참조
예외처리 Api Response를 처리하기 위한 Custom 객체로 아래와 같은 필드를 리턴한다.
- status
- message
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은 ApiExceptionEnum
에서 정의한 예외를 처리한다. 사용하는 방법은 다음과 같다.
@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는 예외처리를 통해 전달된 메시지와 상태코드를 api response로 반환하는 클래스이다.