Spring/Spring Exception

Spring Exception 5. 스프링 부트 Api 오류처리 (BasicErrorController)

토이 개발 스토리 2023. 8. 16. 14:25

BasicErrorController

BasicErrorController에는 html view렌더링 이용시 이미 만들어져있듯 Api에 대한 내용 또한 이미 만들어져 있다.

html view렌더링에 대한 응답과 json에 대한 응답은 다르지만 유입 경로는 동일하다.  

 @RequestMapping(produces = MediaType.TEXT_HTML_VALUE)
 public ModelAndView errorHtml(HttpServletRequest request, HttpServletResponse
  response) {...}
  
 @RequestMapping
 public ResponseEntity<Map<String, Object>> error(HttpServletRequest request) {...}

 

BasicErrorController를 확장하면 JSON 메시지도 변경할 수 있다. 하지만 APi오류는 @ExceptionHandler 애노테이션이 제공하는 기능이 더 나은 방법이다. API 오류 처리는 html 페이지를 제공하는 것과는 너무나도 큰 차이가 있다. 한 컨트롤러에서 상황에 따라 서로 다른 응답 결과를 내려줘야 하는 상황이 있다.

 

예를 들어 회원이 어떠한 게시물에 접속을 시도할 때, 게시물에서 여러 검증을 하고 각 검증에 따라 응답 방식이 다르게 나가야 할 수 있기 때문이다. 예시 코드를 첨부한다.

 

코드 링크

https://github.com/travel-planner-project/TravelPlanner/commit/5072a65f8a5675e52cfa5d4cc33914df8bca29f9

 

Feat: ValidatingService 추가(#114) · travel-planner-project/TravelPlanner@5072a65

toychip committed Aug 6, 2023

github.com

이러한 복잡한 API에서 오류를 처리할 때 어떻게 처리해야하는지 단계적으로 알아본다.


김영한님 mvc2 - Exception 강의로 학습하였습니다.

공부한 내용을 상기시키기고 해당 내용을 몰랐을 때의 입장에서 쉽게 배울 수 있지 않을까 해서 작성한 글입니다. 잘못된 내용이 있을 경우 말씀해 주세요. 피드백 환영합니다.