Roy는 REST의 대부분의 원칙을 처음으로 발명 한 사람이 아니며 다양한 특정 문제를 해결하기 위해 이전 시스템에서 작동하는 것으로 알려진 많은 원칙을 모았습니다. REST는 이러한 원칙을 단일 아키텍처에 적용한 자연스러운 결론입니다.
Roy Fielding이 REST 에 대한 논문을 쓰기 전에도 HTTP는 이미 REST로 알려진 원칙을 중심으로 설계되었습니다. 그의 논문 의 결론 에서 그는 다음과 같이 썼다.
인터넷 엔지니어링 태스크 포스 내에서 기존 하이퍼 텍스트 전송 프로토콜 (HTTP / 1.0) [19]을 정의하고 새로운 표준 인 HTTP / 1.1 [42] 및 URI (Uniform Resource Identifiers) [21]에 대한 확장을 설계하기위한 노력의 시작 [21] ], 나는 월드 와이드 웹의 작동 방식에 대한 모델이 필요하다는 것을 인식했습니다. REST (Representational State Transfer) 아키텍처 스타일이라고하는 전체 웹 응용 프로그램 내에서의 이상적인 상호 작용 모델은 최신 웹 아키텍처의 기초 가되어 기존 아키텍처의 결함을 식별하고 확장 할 수있는 기본 원칙을 제공합니다. 배포 전에 검증되었습니다 .
REST 및 HATEOS는 다음과 같이 설계된 문제에 적합합니다.
REST는 대기 시간 및 네트워크 통신 을 최소화하면서 동시에 구성 요소 구현의 독립성 및 확장 성을 최대화 하는 조정 된 아키텍처 제약 조건 세트입니다 . 이것은 다른 스타일이 컴포넌트 시맨틱에 중점을 둔 커넥터 시맨틱에 제한을 두어 달성됩니다. REST는 상호 작용 의 캐싱 및 재사용, 구성 요소의 동적 대체 가능성 및 중개자 에 의한 조치 처리를 가능하게하여 인터넷 규모의 분산 하이퍼 미디어 시스템의 요구를 충족시킵니다.
그러나 웹 및 REST가 모든 문제에 반드시 적합한 것은 아니라는 점에 유의해야합니다.
마찬가지로 제안 된 확장을 REST와 비교하여 확장이 아키텍처에 맞는지 확인할 수 있습니다. 그렇지 않은 경우 해당 기능을보다 적합한 아키텍처 스타일과 병렬로 실행중인 시스템으로 리디렉션하는 것이 더 효율적입니다.
따라서 귀하의 질문이 "RESA 및 HATEOAS가 웹 서비스에 적합한 아키텍처입니까?" 그렇다면 대답은 단순히 "예, 웹 서비스를위한 훌륭한 아키텍처입니다"입니다. 문제는 실제로 사람들이 웹 제약 조건에 맞게 수정하여 해결하려는 모든 문제가 처음부터 웹 서비스 였어야하는지 여부입니다.
실제로 REST에 맞지 않는 많은 API가 있습니다. REST가 해결하기 위해 설계된 일종의 확장 성을 필요로하지 않는 API는 독립적으로 발전 할 수 있고 오래 지속될 필요가없는 여러 조직에서 사용하지 않습니다. 이러한 문제의 경우 REST 제약 조건은 구속복 일뿐입니다.
그러나 실제로 REST가이 도메인에 바람직한 아키텍처라고 생각할 이유가 있습니까? 보다 구체적으로, HATEOAS가 기계 간 통신에 유리한 설계 원칙이라는 증거가 있습니까?
많은 사람들의 문제를 해결하는 데있어 웹의 성공이 증거입니다. REST는 많은 이전 아키텍처 스타일의 디자인을 결합한 하이브리드 아키텍처입니다. 많은 문제 도메인에는 웹의 모든 요구 사항이 없으며 REST의 모든 제약 조건을 준수 할 필요가 없습니다. 그렇기 때문에 REST의 일부만 적용하고 나머지는 적용하지 않고 제대로 작동하는 많은 성공적인 아키텍처가있는 이유입니다. 예를 들어, HATEOAS 및 Uniform Interface는 상대적으로 사용 중단 기간이 비교적 짧은 조직 경계와 시스템을 넘을 필요가없는 API에서 종종 건너 뛰는 원칙입니다.