이번에는 User 데이터를 조회/저장 등 할때 status code 설정을 통해 예외처리 Exception handing을 해보겠다. 변경 전에는 User 조회 시 존재하지 않는 유저여도 200 정상 상태값을 리턴하며, 아무 값도 리턴되지 않았다.
기존의 retrieveUser 함수를 위와 같이 수정했다. FindOne으로 해당 id를 갖고있는 User가 리턴되지 않으면, UserNotFoundExeption을 호출한다. 해당 exception은 조회하고자 하는 id 값을 포함한 String을 인자로 예외 처ㅣㄹ message를 만들게 된다.
user 패키지에 아래와 같은 class를 만들어준다.
@ResponseStatus(HttpStatus.NOT_FOUND)를 통해 상태값 404를 리턴하게 되고, 컨트롤러에서 전달받은 메시지가 전달된다.
그리고 발생한 예외를 리턴하기 위한 ExceptionResponse와 예외처리된 exeption 종류에 따라 httpStauts를 컨트롤 할 함수 CustomizedResponseEntityException도 만들었다.
Json형태로 리턴될 예외 처리 엔티티이다. 간단한 형태의 객체이고, 시간, 메시지, 디테일 정보를 담고 있다.
예외처리 핸들링을 위한 객체이며, @ControllerAdvice를 설정하면 모든 컨트롤러 실행시 해당 어노테이션의 빈의 자동으로 실행된다. 그러므로 예외가 발생할 때 마다 해당 컨트롤러가 사용ㅇ된다고 보면 된다.
첫번재는 @ExceptionHandler(Exception.class)로 모든 예외발생 시 INTERNAL_SERVICE_ERROR를 발생하고, 두번째는 미리 만들어놓은 UserNotFoundException발생 시 404에러를 발생시킨다.
postman으로 테스트를 해 보면
위와 같이 존재하지 않는 id로 api를 호출하면 404에러 및 메시지를 확인할 수 있다.
끝 :)
'IT' 카테고리의 다른 글
[Vue.js 공부] #1 환경설정, Node.js, NVM 등 (0) | 2022.06.28 |
---|---|
Springboot #8 MessageSource 활용한 다국어 지원 (0) | 2022.04.03 |
Springboot #6 User 관리 API (0) | 2022.03.27 |
Springboot #5 Spring 동작 원리, Dispatcher Servlet (0) | 2022.03.27 |
SpringBoot #4 간단한 Bean 작성 (0) | 2022.03.27 |