Notice
Recent Posts
Recent Comments
Link
«   2024/05   »
1 2 3 4
5 6 7 8 9 10 11
12 13 14 15 16 17 18
19 20 21 22 23 24 25
26 27 28 29 30 31
Archives
Today
Total
관리 메뉴

개발자되기 프로젝트

[API예외] SpringBoot 기본 오류 처리 본문

인프런/[인프런] 스프링 MVC 2

[API예외] SpringBoot 기본 오류 처리

Seung__ 2021. 9. 28. 20:59

API예외 처리는 SpringBoot의 기본 오류 처리 방식을 사용할 수 있음.

 

1. BasicErrorController


  • SpringBoot가 제공하는 기본 ErrorController
@Controller
@RequestMapping("${server.error.path:${error.path:/error}}")
public class BasicErrorController extends AbstractErrorController {


@RequestMapping(produces = MediaType.TEXT_HTML_VALUE)
public ModelAndView errorHtml(HttpServletRequest request, HttpServletResponse response) {}

@RequestMapping
public ResponseEntity<Map<String, Object>> error(HttpServletRequest request) {}

}
  •   /error 동일한 경로를 처리하는 errorHtml() , error() 두 메서드가 있다.
  • errorHtml() : produces = MediaType.TEXT_HTML_VALUE :
    • 클라이언트 요청의 Accept 해더 값이 text/html 인 경우에는 errorHtml() 을 호출해서 view 제공.
  • error() : 그외 경우에 호출되고 ResponseEntity 로 HTTP Body에 JSON 데이터를 반환한다.

 

2. SpringBoot의 예외처리


  • 스프링 부트의 기본 설정은 오류 발생시 /error 를 오류 페이지로 요청!!
  • BasicErrorController 는 이 경로를 기본으로 받는다.
  • ( server.error.path 로 수정 가능, 기본 경로 / error )

 

3. 오류 정보 옵션


  • server.error.include-binding-errors=always
    server.error.include-exception=true
    server.error.include-message=always
    server.error.include-stacktrace=always
  • 외부에 노출하지 말고 !!!!! 로그로만..

 

4. Html 페이지 vs API 오류


  • BasicErrorController 를 확장하면 JSON 메시지도 변경할 수 있다. 
  • 하지만 @ExceptionHandler 가 제공하는 기능을 사용하는 것이 더 좋음.
  • BasicErrorController 를 확장해서 JSON 오류 메시지를 변경 할 수 는 있다.. .
  • BasicErrorController 는 HTML 페이지를 제공하는 경우에는 굉장히 편리함.
  • 하지만 API는 , 각 컨트롤러나 예외마다 서로 다른 응답 결과를 출력해야 할 수 도 있음.
  • HTML 오류 페이지 : BasicErrorController 사용
  • API 오류 처리 : @ExceptionHandler
Comments