REST 커뮤니티의 아무도 REST가 쉽다고 말하지 않습니다. HATEOAS는 REST 아키텍처에 어려움을 더하는 측면 중 하나 일뿐입니다.
사람들은 당신이 제안하는 모든 이유 때문에 HATEOAS를하지 않습니다. 그것은 어렵습니다. 서버 측과 클라이언트 모두에 복잡성을 추가합니다 (실제로 혜택을 받고 싶다면).
그러나 오늘날 수십억 명의 사람들이 REST의 이점을 경험하고 있습니다. 아마존에서 "체크 아웃"URL이 무엇인지 아십니까? 나는하지 않는다. 하지만 매일 체크 아웃 할 수 있습니다. URL이 변경 되었습니까? 몰라, 상관 없어.
신경 쓰는 거 알아? 화면을 작성한 사람은 누구나 Amazon 자동화 클라이언트를 스크랩했습니다. 웹 트래픽을 고심하게 스니핑하고 HTML 페이지 등을 읽고 언제 어떤 페이로드로 어떤 링크를 호출할지 찾는 사람.
그리고 Amazon이 내부 프로세스와 URL 구조를 변경하자마자 링크가 끊어 졌기 때문에 하드 코딩 된 클라이언트가 실패했습니다.
그러나 캐주얼 웹 서퍼들은 거의 문제없이 하루 종일 쇼핑을 할 수있었습니다.
그것은 작동중인 REST이며, 텍스트 기반 인터페이스를 해석하고 직관 할 수 있고, 장바구니로 작은 그래픽을 인식하고, 그것이 실제로 의미하는 바를 파악할 수있는 인간에 의해 증강됩니다.
소프트웨어를 작성하는 대부분의 사람들은 그렇게하지 않습니다. 자동화 된 클라이언트를 작성하는 대부분의 사람들은 신경 쓰지 않습니다. 대부분의 사람들은 처음부터 중단되지 않도록 응용 프로그램을 엔지니어링하는 것보다 중단 될 때 클라이언트를 수정하는 것이 더 쉽다고 생각합니다. 대부분의 사람들은 중요한 곳에 클라이언트가 충분하지 않습니다.
전문 기술 지원이있는 두 시스템과 트래픽 양측의 IT간에 통신하기위한 내부 API를 작성하는 경우, 변경 일정에 따라 변경 사항을 빠르고 안정적으로 전달할 수있는 IT 담당자는 아무것도 구매하지 않습니다. 당신은 그것을 필요로하지 않고, 당신의 앱은 충분히 크지 않으며, 중요 할만큼 오래 지속되지도 않습니다.
사용자 기반이 많은 대규모 사이트에는이 문제가 있습니다. 그들은 시스템과 상호 작용할 때 변덕에 클라이언트 코드를 변경하도록 사람들에게 요청할 수 없습니다. 서버 개발 일정은 클라이언트 개발 일정과 동일하지 않습니다. API의 갑작스러운 변경은 양측의 트래픽과 운영을 방해하기 때문에 관련된 모든 사람에게 허용되지 않습니다.
따라서 이와 같은 작업은 HATEOAS의 이점을 얻을 수 있습니다. 버전이 더 쉽고 이전 클라이언트가 마이그레이션하기 쉽고 이전 버전과의 호환성이 더 쉽습니다.
작업 흐름의 대부분을 서버에 위임하고 결과에 따라 조치를 취하는 클라이언트는 그렇지 않은 클라이언트보다 서버 변경에 훨씬 더 강력합니다.
그러나 대부분의 사람들은 그러한 유연성이 필요하지 않습니다. 그들은 2 개 또는 3 개의 부서를위한 서버 코드를 작성하고 있으며 모두 내부 용입니다. 고장난 경우 고쳐서 정상적인 작동에 반영했습니다.
REST에서든 다른 것에서든 유연성은 복잡성을 증가시킵니다. 간단하고 빠르기를 원하면 유연하게 만드는 것이 아니라 "그냥 해"만하면됩니다. 시스템에 추상화와 역 참조를 추가하면 작업이 점점 더 어려워지고 테스트 할 코드가 많아집니다.
대부분의 REST는 "필요하지 않을 것"이라는 글 머리 기호에 실패합니다. 물론 그렇게 할 때까지.
필요한 경우 사용하고 배치 된대로 사용하십시오. REST는 HTTP를 통해 물건을 앞뒤로 밀지 않습니다. 한 번도 없었고 그보다 훨씬 높은 수준입니다.
그러나 REST가 필요하고 REST를 사용하는 경우 HATEOAS가 필요합니다. 그것은 패키지의 일부이며 그것이 작동하도록 만드는 열쇠입니다.