...Rest요청에 관한 에러처리 연습두번째 시간.
1. BizException 생성 (비즈니스 예외)
비즈니스 예외처리 클래스 선언 (java.lang.RuntimeException 상속)
2. ApiExceptionController수정 (Rest Controller - throw Exception)
REST요청을 처리하는 URI - "/api/boards/{id}" 추가. PathVariable ("biz")일시,
BizException 강제발생..(서블릿컨테이너 WAS로 예외가 전달된다..)
3. ExceptionResolver 생성 (Custom)
org.springframework.web.servlet.HandlerExceptionResolver 인터페이스 구현하여 커스텀한다.
--> resolveException 메서드 오버라이드
* try ~catch --> BizException Reslove(해결)
- Convert to Error (Runtime 서버에러를 400에러로 변환)
("Exception == ServerError"(500) --> ClientBadRequest(400))
- REST-HTTP REQUEST HEADER Attribute "accept" 설정에 따라 Json, HttpView 분기처리..
accept: application/json
accept: text/html (미지정시 기본설정)
* ObjectMapper.writeValueAsString("JSON") --> JSON을 String으로 Convert.
4. 생성된 ExceptionResolver등록.
* HandlerExceptionResolver에 .add("커스텀 Exception Resolver"); - 리졸버를 추가한다.
5. POST MAN(RestAPI Test..)
***************
요청1
***************
Request (요청-REST)
요청유형 - HTTP GET
요청URL - http://localhost:8080/api/boards/biz
REQUEST Headers
Accept | application/json | "API응답결과 JSON으로 받는다" |
Response (응답결과)
JSON Format { "Exception" : "Package + Class(BizException)" , "Message" : "BizException: 사용자에러(잘못된 게시글 선택)" } |
***************
요청2
***************
Request (요청-REST)
요청유형 - HTTP GET
요청URL - http://localhost:8080/api/boards/biz
REQUEST Headers
Accept | text/html | "API응답결과 Html View" |
--> Accept 속성 미 지정시 "text/html"로 설정된다.
Resonse (응답결과)
--> 에러페이지 View리턴.. "Path(경로) : resources/templates/error/500.html"
'SpringBoot' 카테고리의 다른 글
[SpringBoot] RestAPI요청 예외처리 (1) (0) | 2021.08.18 |
---|---|
[SpringBoot] 인터셉터 생성 및 적용 (0) | 2021.07.31 |
[SpringBoot] 쿠키 생성 및 활용 (0) | 2021.07.25 |
[SpringBoot] 서블릿 필터 생성 및 적용 (0) | 2021.07.25 |
[SpringBoot] 예외처리와 에러페이지 (0) | 2021.07.25 |