helloworld
jpa / id값으로 유저정보 가져오기 본문
전 글에서는 모든 유저의 정보를 가져왔다.
이번엔 한 명의 유저 정보를 가져와보자..
jpa를 사용하기때문에 비슷비슷하다 ..
우선 restAPI를 하는 과정이기 때문에
@GetMapping("/users/{id}")
요청은 똑같다.
가변변수를 사용하기 때문에 파라미터를 받을 때에 @Pathvariable 어노테이션을 붙여준다.
public EntityModel<Optional<User>> retrieveUser(@PathVariable int id) {
Optional<User> user = userRepository.findById(id);
Optional<User> user = userRepository.findById(id);
Optional이 붙은 이유와 EntityModel을 붙인 이유를 간단히 말하자면
저번에 포스팅했던 HATEOAS 기능을 사용하기 위해 EntityModel이 리턴값으로 붙었고
Optional은 안쓰면 에러난다 ㅋㅋ 왜냐하면 findById 메서드를 가보면
Optional<T> findById(ID id);
반환값이 Optional이기 때문이다 ㅋㅋ Optional은 어려운 것은 아니고 내가 알기론 Null값 체크해주는 좋은 녀석이다..
아마도 NullPointerExceoption을 안나게 해주는..? 아닐수도..
아무튼 이녀석 때문에 해테오스 쓸때도 조금 헷갈렸다.
//hateoas
EntityModel<Optional<User>> model = EntityModel.of(user);
WebMvcLinkBuilder linkTo = linkTo(methodOn(this.getClass()).retrieveAllUsers());
model.add(linkTo.withRel("all-users"));
EntityModel<Optional<User>> model = EntityModel.of(user);
WebMvcLinkBuilder linkTo = linkTo(methodOn(this.getClass()).retrieveAllUsers());
model.add(linkTo.withRel("all-users"));
당연하게도 EntityModel<user> model = ~~~ 이런식으로 코드를 적었는데 빨간줄 떠서 확인해보니 Opional 붙이라고 하더군..
아무튼 해테오스도 작업을 해주고 실행 시켜주면

깰꼼..
'restful' 카테고리의 다른 글
| jpa/ insert (0) | 2023.08.24 |
|---|---|
| jpa / delete 기능 (0) | 2023.08.24 |
| jpa crud기능 사용(select) (0) | 2023.08.24 |
| jpa/ h2 (0) | 2023.08.24 |
| HATEOAS (0) | 2023.08.17 |