JPA
글 상세보기(조회) API 구현
yoooon1212
2024. 10. 2. 14:24
BlogService 코드 추가
public Article findById(Integer id) {
// Optional<T> 는 JAVA 8에서 도입된 클래스이며,
// 값이 존재할 수도 있고 없을 수도 있는 상황을 명확하게 처리하기 위해 사용된다.
return postRepository.findById(id).orElseThrow(() -> new Exception400("해당 게시글이 없습니다."));
// Optional<Article> 반환 -> Optional(Article)의 orElseThrow() 사용
// 데이터가 없으면 예외 떨어짐
}
Optional<T> (Optional을 사용하여 null 처리를 안전 처리 하기 위함)
- 값이 존재할 때: Optional 안에 값이 포함되어 있으며, 이 값을 안전하게 꺼내어 사용할 수 있습니다.
- 값이 없을 때: Optional이 비어 있으며, 이를 통해 null을 직접 처리하는 대신, 다양한 메서드를 사용하여 비어있는 상황을 처리할 수 있습니다.
BlogController 코드 추가
// URL 매핑(주소 설계) - http://localhost:8080/api/articles/1 -> PathVariable 방식
@GetMapping(value = "/api/articles/{id}")
public ApiUtil<?> findArticle(@PathVariable(name = "id") Integer id) {
// 1. 유효성 검사 생략
Article article = blogService.findById(id);
return new ApiUtil<>(article);
}
postman에서
POST 방식으로 데이터를 send 하면
h2-console에서 insert 된 데이터 값을 확인할 수 있다.
http://localhost:8080/api/articles 주소로 가면
JSON 형식의 데이터를 확인할 수 있다.
위와 같은 방법으로 postman에서 send를 보내고
h-2 console에서 데이터 값이 들어오는 것을 확인한 후
url 로 들어가면 id가 2번인 data를 확인할 수 있다.
id가 1인 이유는 서버를 재실행하면서 data가 지워졌기 때문이다.
서버를 재실행하지 않고 postman에 JSON 데이터를 두 번 send 하면 아래와 같은 결과를 확인할 수 있다.