백만년만에 Java코드를 봅니다.
Java에서 REST API를 가장 마지막으로 구현해 본 것은 SpringBoot를 사용하여 구현한 것입니다.
경험적으로 API를 잘 만드는 것도 중요하지만 에러가 났을 때 클라이언트에게 정확한 메세지를 전달하게 하여 역할을 나누어 에러에 대한 예외처리를 하는 것이 중요합니다.
이것은 Spring5나 SpringBoot2를 사용해도 마찬가지이고 변함없는 진리입니다.
내가 어떤 예외처리를 잘못하여 클라이언트에게 불필요한 예외를 던저줄때 반드시 필요한 것입니다.
제가 2014년도 부터 사용해온 방식이기도 합니다.
REST API의 모든 예외를 잡아처리하려면
org.springframework.web.bind.annotation.ControllerAdvice
@ControllerAdvice 로 와드를 박고
https://docs.spring.io/…/b…/annotation/ControllerAdvice.html
컨트롤러에서 발생한 예외를 잡아처리하려면
org.springframework.web.bind.annotation.ExceptionHandler
@ExceptionHandler로 잡습니다.
https://docs.spring.io/…/b…/annotation/ExceptionHandler.html
중요한 것은 예외처리를 하고 클라이언트에게 어떠한 @ResponseStatus와 @ResponseBody를 주냐는 것입니다.
https://docs.spring.io/…/bind/annotation/ResponseStatus.html
https://docs.spring.io/…/…/bind/annotation/ResponseBody.html
꼭 사용해보세요. 반드시 도움이 될 것입니다.^^
Spring5에서는 @ResponseStatus의 개선책인 @ResponseStatusException이 나왔습니다.
Exception이 발생하는 소스에서 바로 처리 할 수 있어 좋은 것 같습니다.
[참고링크]
http://www.baeldung.com/spring-response-status-exception