@GetMapping("/posts/{id}") public String getPosts(@PathVariable Long id){ Optional<Post> byId = postRepository.findById(id); Post post = byId.get(); return post.getTitle(); }
}
Post, PostRepository, Controller를 생성합니다. Controller는 @Pathvariable을 통해 Long 타입의 id를 받아 id를 Post에 담고 제목을 return 하는 코드입니다.
Post 객체를 생성하고 jpa라는 제목을 set 해준 후 save합니다. 그 후 @PathVariable로 선언한 id를 보내주고 상태코드와 jpa라는 제목을 가졌는지 확인하고, 이상이 없다면 테스트가 통과하게 됩니다.
Entity 타입
id로 받아올 경우 컨버팅을 할 때 id를 찾고 담는 부분을 제외하고 찾아올 수가 있습니다. 더이상 post 매개변수 이름이 @PathVariable 이름과 같지 않기 때문에 바인딩 받을 때 사용할 @PathVariable 이름을 반드시 @PathVariable(“id”) 라고 명시해주어야 합니다. 이 때 id에 해당하는것을 post로 받게 되면 그 때 DomainClassConverter가 동작합니다.
1 2 3 4
@GetMapping("/posts/{id}") public String getPost(@PathVariable("id") Post post) { return post.getTitle(); }
위 코드처럼 Post로 받게 된다면 id를 꼭 명시 해주어야 합니다. 테스트를 실행하면 동일한 결과가 나올 것입니다.