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 페이지를 제공하는 것과는 너무나도 큰 차이가 있다. 한 컨트롤러에서 상황에 따라 서로 다른 응답 결과를 내려줘야 하는 상황이 있다.
예를 들어 회원이 어떠한 게시물에 접속을 시도할 때, 게시물에서 여러 검증을 하고 각 검증에 따라 응답 방식이 다르게 나가야 할 수 있기 때문이다. 예시 코드를 첨부한다.
코드 링크
Feat: ValidatingService 추가(#114) · travel-planner-project/TravelPlanner@5072a65
toychip committed Aug 6, 2023
github.com
이러한 복잡한 API에서 오류를 처리할 때 어떻게 처리해야하는지 단계적으로 알아본다.
김영한님 mvc2 - Exception 강의로 학습하였습니다.
공부한 내용을 상기시키기고 해당 내용을 몰랐을 때의 입장에서 쉽게 배울 수 있지 않을까 해서 작성한 글입니다. 잘못된 내용이 있을 경우 말씀해 주세요. 피드백 환영합니다.
'Spring > Spring Exception' 카테고리의 다른 글
Spring Exception 7. Api에서 ExceptionResolver 활용 (0) | 2023.08.18 |
---|---|
Spring Exception 6. ExceptionResolver (HandlerExceptionResolver) (0) | 2023.08.17 |
Spring Exception 4. Api 예외 처리 (Spring mvc VS RestfulApi) (0) | 2023.08.16 |
Spring Exception 3. 스프링 부트 오류페이지 View(BasicErrorController) (0) | 2023.08.15 |
Spring Exception 2. 서블릿2 (Filter와 Interceptor를 안 거치려면?) (0) | 2023.08.14 |