똑같은 삽질은 2번 하지 말자
Spring Boot 개념다지기 No.13(ExceptionHandler ,Spring HATEOAS) 본문
스프링 @MVC 예외 처리 방법
- @ControllerAdvice
- @ExceptionHandler
스프링 부트가 제공하는 기본 예외 처리기
- BasicErrorController
- HTML과 JSON 응답 지원
- 커스터마이징 방법
- ErrorController 구현
HTML 기본 예외 처리는 요거
많이들 봤을거라고 생각되는데 그럼 이제부터 ErrorHandler를 커스텀해보자
@GetMapping("/error")
public String error() {
throw new SampleException();
}
@ExceptionHandler(SampleException.class)
public @ResponseBody AppError sampleError(SampleException e) {
AppError appError = new AppError();
appError.setMessage("error.app.key");
appError.setReason("reason");
return appError;
}
응답본문으로 해서 (AppError는 메시지,이유를 가진 간단한 에러객체)
커스텀 에러 페이지
- 상태 코드 값에 따라 에러 페이지 보여주기
- src/main/resources/static|template/error/
- 404.html
- 5xx.html
- ErrorViewResolver 구현
커스텀 에러페이지나 우리가 커스텀한 에러에 걸리지 않으면 BasicErrorController가 에러처리를 한다.
Hypermedia As The Engine Of Application State
- 서버: 현재 리소스와 연관된 링크 정보를 클라이언트에게 제공한다.
- 클라이언트: 연관된 링크 정보를 바탕으로 리소스에 접근한다.
- 연관된 링크 정보(RelationHypertext Reference)
- spring-boot-starter-hateoas 의존성 추가
- https://spring.io/understanding/HATEOAS
- https://spring.io/guides/gs/rest-hateoas/
- https://docs.spring.io/spring-hateoas/docs/current/reference/html/
ObjectMapper 제공
- spring.jackson.*
- Jackson2ObjectMapperBuilder
LinkDiscovers 제공
- 클라이언트 쪽에서 링크 정보를 Rel 이름으로 찾을때 사용할 수 있는 XPath 확장 클래스
RestAPI를 고급지게? 만들어주는..?
'Spring > Spring Boot' 카테고리의 다른 글
Spring Boot 개념다지기 No.15 (Spring Data) (0) | 2020.05.03 |
---|---|
Spring Boot 개념다지기 No.14 (CORS) (0) | 2020.05.03 |
Spring Boot 개념다지기 No.12(Thymeleaf, HtmlUnit) (0) | 2020.05.02 |
Spring Boot 개념다지기 No.11(Web JAR, index페이지, 파비콘) (0) | 2020.05.02 |
@Valid 와 BindingResult (0) | 2020.04.30 |
Comments