인프런 커뮤니티 질문&답변

bbmgom님의 프로필 이미지
bbmgom

작성한 질문수

[개정판 2023-11-27] Spring Boot 3.x 를 이용한 RESTful Web Services 개발

JPA를 이용한 개별 사용자 상세 조회 - HTTP Get method

Resource HateOAS

작성

·

309

1

 

Resource 부분에서 HateOAS가 보이지 않는데 어떤 오류일까요..?

 

POM.xml 에는 정상적으로 등록되어 있습니다..

 

답변 3

4

저는 스프링부트 2.4.12를 사용하고 있고, 처음에 Hateos 관련 클래스를 불러올 때 작성자님과 동일하게 고민했어서 도움이 되시길 바래서 강사님은 아니지만, 댓글 남깁니다.

Hateoas는 버전에 따라 사용하는 방법이 다르다고 알고있습니다. 
제 코드입니다.

@GetMapping("/users/{id}")
    public EntityModel<User> retrieveUser(@PathVariable int id){
        Optional<User> user = userRepository.findById(id);

        if(!user.isPresent()) {
            throw new UserNotFoundException(String.format("ID[%S] not found", id));
        }

        EntityModel<User> userModel = new EntityModel<>(user.get());
        WebMvcLinkBuilder linkTo = linkTo(methodOn(this.getClass()).retrieveAllUsers());
        userModel.add(linkTo.withRel("all-users"));

        return userModel;
    }



제가 작성할 때 참고한 사이트는 다음과 같습니다. https://jeonghoon.netlify.app/Spring/SpringBoot13-hateoas/ 
해결이 안되셨다면 참고하시면 좋을 것 같아요!

3

버전문제로 이전강의 때 수정했던 내용 참조하여 아래와 같이 만들었습니다.

@GetMapping("/users/{id}")

public EntityModel<User> retrieveUser(@PathVariable int id) {

Optional<User> user = userRepository.findById(id);

if (!user.isPresent()) {

throw new UserNotFoundException(String.format("ID[%s] not found", id));

}

EntityModel<User> model = EntityModel.of(user.get());

WebMvcLinkBuilder linkTo = WebMvcLinkBuilder.linkTo(WebMvcLinkBuilder.methodOn(this.getClass()).retrieveAllUsers());

model.add(linkTo.withRel("all-users"));

return model;

}

0

bbmgom님의 프로필 이미지
bbmgom
질문자

이것도 스프링 버전의 문제일까요? 현재 사용하는 스프링은 2.5.5 입니다.

bbmgom님의 프로필 이미지
bbmgom

작성한 질문수

질문하기