API를 이용하여 통신 하는 과정에서 404에러가 발생했을 때 제대로 response처리를 하지 못하고 에러를 발생하는 모습이 보여서 해당 과정을 예외처리 하고자 하였다.
이전에 프로젝트 했을 당시 RestTemplate를 사용하여 API통신을 했던 경험이 있었다. 그 때 당시에도 해당 API에서 결과값이 없을 때 처리했던 기억이 있어서 그 API를 다시 분석 하였다.
"header": {
"resultCode": 0,
"resultMessage": "SUCCESS"
},
"data": {
...
}
위와 같은 형식으로 API Response가 구성되었고 해당 Header에 있는 resultCode
와 resultMessage
를 분기로 성공과 실패를 나누었다.
하지만 새로운 API의 response는 resultCode
와 같은 응답관련 정보가 없이 body만 오는 구조였다.
그래서 실패했을 때는 body가 빈 상태로 오겠지 라는 생각으로 (1차원적인 생각...) 코드를 구현했는데 역시 에러가 발생하였고, 실패했을 때의 response를 보니 성공했을 때와는 다른구조로 응답을 보냈다.
그래서 이 부분은 단순 분기 처리로 해결할 수 없다고 판단하여 RestTemplate에서 에러를 처리하자 라고 생각하여 해당 부분을 검색하였다.
검색해보니 ResponseErrorHandler이라는 인터페이스가 있어 이 인터페이스를 이용하여 RestTemplateResponseErrorHandler를 구현하였다.
해당 인터페이스를 이용하여 RestTemplateResponseErrorHandler를 아래와 같이 구현 하였다.
해당 에러가 발생하면 RestTemplateResponseErrorHandler를 타도록 설정 하였다. 이후 ajax로 데이터 처리를 하여 '조회된 값이 없습니다'라는 문구 생성완료.