728x90
반응형
SMALL
예외처리
1) 자동 예외처리
@GetMapping("/{id}")
public ResponseEntity<Post> getPost(@PathVariable int id) {
Optional<Post> post = postRepository.findById(id);
return ResponseEntity.of(post);
}
ResponseEntity.of
메서드는
id 가 존재하지 않으면 404 (Not Found) 를 자동으로 반환합니다.
2) @ResponseStatus
Spring 3.0 에서 도입되었습니다.
@ResponseStatus(HttpStatus.NOT_FOUND)
RuntimeException 를 상속받습니다.
3) @ControllerAdvice
Spring 3.2 에서 도입되었습니다.
AOP 로서 모든 컨트롤러의 실행 전에 실행됩니다.
ResponseEntityExceptionHandler 를 상속받습니다.
@RestControllerAdvice 는 4.3 에 도입되었습니다.
4) ResponseStatusException
Spring 5.0 에서 도입되었습니다.
throw new ResponseStatusException(HttpStatus.NOT_FOUND, String.format("%d 번째 글이 존재하지 않습니다.", id));
다음과 같이 사용할 수 있습니다.
@GetMapping("/{id}")
public EntityModel<Post> getPost(@PathVariable int id) {
Optional<Post> post = postRepository.findById(id);
if (post.isPresent()) {
// HATEOAS
EntityModel<Post> model = new EntityModel<>(post.get());
WebMvcLinkBuilder linkTo = linkTo(methodOn(this.getClass()).getPosts());
model.add(linkTo.withRel("all-posts"));
return model;
} else throw new ResponseStatusException(HttpStatus.NOT_FOUND, String.format("%d 번째 글이 존재하지 않습니다.", id));
}
728x90
반응형
LIST
'Backend > 노트' 카테고리의 다른 글
Tucker 의 Go 언어 프로그래밍 (0) | 2022.08.14 |
---|---|
한 번에 끝내는 Node.js 웹 프로그래밍 초격차 패키지 Online (0) | 2022.07.06 |
DB 연결 (0) | 2022.03.19 |
따라하며 배우는 도커와 CI환경 (0) | 2022.03.11 |
Spring Boot를 이용한 RESTful Web Services 개발 (0) | 2022.03.10 |