현재 없는 사용자를 조회 시 null을 반환하게 만들어둠. 그리고 200 OK가 뜸. -> RESTful 하지 않다.
-> 예외로 처리해보자.
이렇게 하고 없는 회원 조회 시
하지만 우리가 발생시킨 예외를 클라이언트에게 전달하는 것은 적절치 않다.
간혹 예외 발생의 원인이 되는 코드, 라인이 노출되면 보안상 문제.
-> 예외코드를 500번이 아닌 적절한 코드로 주자.
404로 바꿔주자.
-> 앞으로 해당 예외는 500에러가 아니라 404에러로 클라이언트에게 전달된다.
에러 메시지 핸들링 하는 법은 더 있지만 일단 이렇게 해두자.
============================================== 3-6. Spring의 AOP를 이용한 Exception Handling
ResponseEntityExceptionHandler 는 사용하고 있는 시스템에서 에러가 발생하면 에러를 핸들링하는 스프링부트가 제공하는 클래스.
Controller bean에서 예외가 발생하면 이 Handler 예외 클래스가 발생할 수 있도록 해보겠다.
Springframework 에서 로깅정보나 로그인정보 등 항상 실행시켜줘야하는 공통적인 항목 -> AOP이용.
우리의 Handler 클래스도 AOP 사용할 것이다.
1. handleUserNotFoundException 메서드 생성 전.
500번 에러가 발생
2. handleUserNotFoundException 메서드 생성 후.
404오류로 핸들링.
-> 이렇게 AOP 쓰면 trace가 X -> 정확히 의도한 에러메시지만 전달가능.
한줄씩 꼼꼼이 읽어보자.
결론 : 이걸 한 이유 : 이렇게 AOP 쓰면 trace가 X -> 정확히 의도한 에러메시지만 전달가능.
====================================== 3-7. 사용자 삭제를 위한 API 구현 - DELETE HTTP Method
'Java, Spring > Spring Boot를 이용한 RESTful Web Services 개발' 카테고리의 다른 글
5-1 ~ 5-6. 스프링부트가 제공하는 API관련 유틸리티 ( HATEOAS, Swagger, Actuator) (0) | 2022.08.24 |
---|---|
4-8 URI를 이용한 REST API Version 관리~ 4-9 Request Parameter와 Header, MIME type을 이용한 API Version 관리 (0) | 2022.08.23 |
4-5 ~ 4-7. @JsonIgnore, @JsonFilter (0) | 2022.08.23 |
4-1 ~ 4-4 validation, 다국어처리, xml반환 (0) | 2022.08.22 |
2-7. DispatcherServlet과 프로젝트 동작의 이해 ~ 3.4 (0) | 2022.08.22 |