HATEOAS란?

Y_Sevin·2023년 3월 13일
0

이번 포스팅은 RESTful API 디자인의 중요한 측면 중 하나인 HATEOAS에 대해 알아보자한다.

HATEOAS란?

Hypermedia As The Engine Of Application State의 약어로, 애플리케이션의 상태를 주도하는 하이퍼미디어이다.
HATEOAS를 사용한다면 클라이언트는 서버로부터 전달된 리소스를 통해 상호작용할 수 있는 방법을 동적으로 파악할 수 있다.

2. 리소스와 링크

RESTful API에서 리소스는 정보의 표현으로, 링크는 해당 리소스와 연결된 동작을 정의한다.
예를 들어, 블로그 글의 리소스는 글의 내용과 작성자 정보를 포함하고, "수정" 또는 "삭제"와 같은 동작에 대한 링크를 가질 수 있다.

{
  "title": "HATEOAS in RESTful API",
  "content": "Exploring the importance of HATEOAS in RESTful API design.",
  "author": "Your Name",
  "_links": {
    "self": {
      "href": "/blogs/1"
    },
    "edit": {
      "href": "/blogs/1/edit"
    },
    "delete": {
      "href": "/blogs/1/delete"
    }
  }
}

위의 예시를 보면 _links라는 키를 통해 리소스와 관련된 링크들을 정의한다.
클라이언트는 이러한 링크들을 통해 해당 리소스를 수정하거나 삭제할 수 있는 등의 동작을 파악할 수 있다.

  • ex) 12345 라는 계좌를 조회한다면 계좌의 정보와 통장에 입금, 인출, 전송, 닫기를 할수 있는 액션들의 종류의 하이퍼미디어(href)를 전송함

3. HATEOAS의 장점

HATEOAS를 사용하면 클라이언트는 API의 변경에 더 유연하게 대응할 수 있다.
클라이언트는 링크를 통해 리소스와 상호작용하는 방법을 동적으로 파악하므로, 서버의 변경이나 새로운 동작의 추가에도 적응할 수 있다.

또한, HATEOAS는 클라이언트와 서버 간의 결합도를 낮춘다.
클라이언트는 리소스의 구조를 미리 알 필요가 없으며, 서버의 리소스와 동작이 변경되어도 링크를 통해 업데이트된 정보를 얻을 수 있다.

4. HATEOAS의 한계

하지만, HATEOAS를 사용한다고 해서 무조건 좋은건 아니다.
클라이언트가 모든 동작을 서버로부터 받아야 하므로 트래픽이 증가할 수 있다. 또한, 클라이언트가 동적으로 리소스와 상호작용하는 방법을 이해해야 하기 때문에 초기 학습 비용이 발생할 수 있다.

5. 마치며

HATEOAS는 RESTful API 디자인에서 중요한 원칙 중 하나로, 클라이언트와 서버 간의 유연하고 동적인 상호작용을 제공한다. 리소스와 링크를 통한 정보 전달은 API의 변경에 대한 적응성을 높이며, 클라이언트와 서버 간의 결합도를 최소화한다.

RESTful API를 설계할 때 HATEOAS를 고려하면 미래에 대비한 확장성 있는 API를 구축할 수 있다. 기존의 정적인 API 디자인에서 벗어나 유연하고 동적인 API를 구축해봐도 좋을 것 같다.

profile
매일은 아니더라도 꾸준히 올리자는 마음으로 시작하는 개발블로그😎

0개의 댓글