이번 포스팅은 RESTful API 디자인의 중요한 측면 중 하나인 HATEOAS에 대해 알아보자한다.
Hypermedia As The Engine Of Application State
의 약어로, 애플리케이션의 상태를 주도하는 하이퍼미디어이다.
HATEOAS를 사용한다면 클라이언트는 서버로부터 전달된 리소스를 통해 상호작용할 수 있는 방법을 동적으로 파악할 수 있다.
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라는 키를 통해 리소스와 관련된 링크들을 정의한다.
클라이언트는 이러한 링크들을 통해 해당 리소스를 수정하거나 삭제할 수 있는 등의 동작을 파악할 수 있다.
HATEOAS를 사용하면 클라이언트는 API의 변경에 더 유연하게 대응할 수 있다.
클라이언트는 링크를 통해 리소스와 상호작용하는 방법을 동적으로 파악하므로, 서버의 변경이나 새로운 동작의 추가에도 적응할 수 있다.
또한, HATEOAS는 클라이언트와 서버 간의 결합도를 낮춘다.
클라이언트는 리소스의 구조를 미리 알 필요가 없으며, 서버의 리소스와 동작이 변경되어도 링크를 통해 업데이트된 정보를 얻을 수 있다.
하지만, HATEOAS를 사용한다고 해서 무조건 좋은건 아니다.
클라이언트가 모든 동작을 서버로부터 받아야 하므로 트래픽이 증가할 수 있다. 또한, 클라이언트가 동적으로 리소스와 상호작용하는 방법을 이해해야 하기 때문에 초기 학습 비용이 발생할 수 있다.
HATEOAS는 RESTful API 디자인에서 중요한 원칙 중 하나로, 클라이언트와 서버 간의 유연하고 동적인 상호작용을 제공한다. 리소스와 링크를 통한 정보 전달은 API의 변경에 대한 적응성을 높이며, 클라이언트와 서버 간의 결합도를 최소화한다.
RESTful API를 설계할 때 HATEOAS를 고려하면 미래에 대비한 확장성 있는 API를 구축할 수 있다. 기존의 정적인 API 디자인에서 벗어나 유연하고 동적인 API를 구축해봐도 좋을 것 같다.