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

지현명님의 프로필 이미지
지현명

작성한 질문수

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

Level3 단계의 REST API 구현을 위한 HATEOAS 적용

HATEOAS 이거 정말 그렇게 중요한건가요?

작성

·

648

2

hateoas장점이 다음 액션의 링크(?)를 주는거라 했는데 어떻게 사용한다는 걸까요?
{
    "id"1,
    "name""gwise",
    "joinDate""2021-04-29T08:04:34.838+00:00",
    "password""pass1",
    "ssn""770530",
    "_links": {
        "all-users": {
            "href""http://localhost:8088/users"
        }
    }
}

답변 1

12

Dowon Lee님의 프로필 이미지
Dowon Lee
지식공유자

안녕하세요, 이도원입니다.

문의하신 내용처럼, 회원 등록에 관련된 작업이라 가정해 보면, 회원 가입을 하고, 회원의 상세 목록을 확인하는 2가지 작업이라고 가정해 봅시다. 일반적으로 회원 가입 후 사용자에게 부여되는 기본 키(예제에서는 Number)를 사용자가 입력하는 이메일이나 아이디로 설정할 수도 있지만, 애플리케이션에서 중복되지 않는 값을 내부적으로 부여해서 사용하는 경우도 많습니다. 그럴경우 사용자의 상세 정보를 확인하기 위한 endpoint는 http://localhost:8080/users/[사용자의 기본키] 와 같은 형식으로 생성될 수 있는데, 이러한 내용은 등록 작업이 완료되고, 데이터베이스에서 사용자의 정보가 저장 된 다음에 결정됩니다. 어떤 경우에는 사용자 정보의 등록요청 이후에, 기본키 정보 및 상세정보를 알기 위한 또 한번의 요청을 서버에 전달해야 할 수도 있습니다. 

HATEOAS를 사용하면, 반환 값으로 사용되는 정보에 현재 상태(권한 등을 고려해서)에서 사용할 수 있는 또다른 링크의 주소를 같이 얻을 수 있습니다. 위에 예제에서처럼 등록된 정보에 대한 상세보기 URL은 _links에 표기되는 것처럼 말입니다. 물론 이러한 작업은 HATEOAS를 사용하지 않고도, 다른 형식의 반환값으로 클라이언트에 전달할 수도 있지만, 다양한 곳에서 이러한 작업이 필요할 경우, 포맷을 통일화 시켜줘야 합니다. HATEOAS는 그러한 의미에서, 현재 Resource의 상태 정보를 변경 또는 확인함과 동시에 추가적으로 사용할 수 있는 다른 상태정보의 URL이 어떻게 되는지도 알려주고, 이 정보를 통일된 포맷으로 반환해줄수 있다는 장점도 있습니다.

설명이 길어졌는데, 궁금한 사항이 있으시면 다시 글 남겨 주세요.

감사합니다. 

지현명님의 프로필 이미지
지현명

작성한 질문수

질문하기