Hypermedia as the Engine of Application State(HATEOAS)는 REST의 uniform interface 제약조건 중 하나입니다.
이름을 보면 하이퍼미디어를 마치 애플리케이션 상태의 원동력으로 보는것과 같은 느낌을 줍니다.
이 제약조건은 서버가 클라이언트에게 리소스의 표현을 전달 할 때, 리소스 사용시 필요한 하이퍼미디어 링크를 함께 보내는 것을 의미 합니다.
이렇게 하게 되면 클라이언트측에서 링크를 따라가기만 하는것으로 모든 기능을 구현할 수 있어 클라이언트측의 복잡성을 낮추고, 서버측에서 관련 URI를 변경하여도 클라이언트측에서는 변경할 필요가 없게 되어 유지 보수성이 향상됩니다.
HATEOAS는 두 가지 방법을 이용하여 구현할 수 있습니다.(둘중 어느것도 정해진 정답이 없습니다.)
아래는 HTTP response header 를 이용한 방식의 예 입니다.
HTTP/1.1 200 OK
...
Link: <10/employees>; rel="employees"
아래는 HTTP response body 를 이용한 방식의 예 입니다.
{
"departmentId": 10,
"departmentName": "Administration",
"locationId": 1700,
"managerId": 200,
"links": [
{
"href": "10/employees",
"rel": "employees",
"type" : "GET"
} ]
}
위의 HATEOAS 개념만 봐서는 완벽한 것처럼 보이지만 실제 실무를 하다 보면 한계에 부딪치게 됩니다.
이유는 다음과 같습니다.
HATEOAS를 완벽하게 구현할 필요 없이, 상황에 따라 적절하게 반영하면 됩니다.
유익한 글이었습니다.