REST API를 디자인할 때 주의해야 할 핵심 원칙 중 하나는 Self-Descriptiveness와 HATEOAS입니다. 이러한 원칙은 API의 설계와 사용성을 향상시키는 데 중요한 역할을 합니다.
Self-descriptiveness란 API가 전송하는 메시지 자체만으로도 그 의미를 해석할 수 있어야 함을 의미합니다. 이는 클라이언트가 메시지를 받고 해석할 때 추가적인 문서나 정보 없이도 명확한 이해를 할 수 있어야 한다는 것을 의미합니다. 예를 들어, JSON 형식의 데이터를 전송할 때는 Content-Type 헤더를 통해 해당 데이터의 미디어 타입이 명시되어야 합니다. 또한, 메시지에는 데이터의 의미를 설명하는 정보가 포함되어야 합니다.
HATEOAS는 REST 아키텍처의 중요한 특성 중 하나로, Hypermedia를 통해 애플리케이션 상태의 전이를 제어하는 개념입니다. 즉, 클라이언트는 서버로부터 받은 메시지에 포함된 링크를 따라가면서 애플리케이션의 상태를 변경할 수 있어야 합니다. 이를 통해 클라이언트와 서버 간의 의사소통이 동적이고 유연하게 이루어질 수 있습니다.
REST API를 디자인할 때는 Self-descriptiveness와 HATEOAS를 만족시키기 위해 노력해야 합니다.
이러한 원칙을 따르면 REST API가 더욱 쉽게 이해되고 사용되며, 더욱 유연하고 확장 가능한 시스템을 구축할 수 있게 됩니다.
JSON은 Self-decriptiveness 와 HATEOAS를 만족하지 않기 때문에 REST 하지 못하다
1. Self-decriptiveness 측면:
request message만으로 "id", "title"이 무엇을 의미하는지 알 수 없다.
2. HATEOAS 측면:
다음 상태로 전이할 링크가 없다.
Self-decriptiveness
(1) Media type
(2) Profile
Link 헤더에 profile relation으로 해당 명세를 링크한다.
단점:
(1) date로
단점:
(2) HTTP 헤더로 (Link, Location 등의 헤더로 링크를 표현)
단점:
[참고]