내가 관여하는 SaaS 스타트 업의 경우 RESTful 웹 API와이를 사용하는 서로 다른 플랫폼에서 몇 가지 클라이언트 앱을 모두 구축하고 있습니다. API를 알아 낸 것 같지만 이제는 클라이언트로 향하고 있습니다. REST에 대해 읽으면서 REST의 핵심 부분이 발견이라는 것을 알지만 발견이 실제로 무엇을 의미하는지에 대한 두 가지 다른 해석 사이에 많은 논쟁이있는 것 같습니다.
개발자 검색 : 개발자는 리소스 URI, 쿼리 매개 변수, 지원되는 HTTP 메서드 및 문서를 탐색하고 API의 응답을 실험하여 발견 한 기타 세부 정보와 같은 방대한 양의 API 세부 정보를 클라이언트에 하드 코딩합니다. 이러한 유형의 발견 IMHO는 멋진 연결과 API 버전 관리 질문을 필요로하며 클라이언트 코드를 API에 하드 커플 링하게합니다. 잘 문서화 된 RPC 컬렉션을 사용하는 것보다별로 좋지 않습니다.
런타임 검색 -클라이언트 앱 자체는 대역 외 정보가 거의 또는 전혀없이 필요한 모든 것을 파악할 수 있습니다 (아마 API가 처리하는 미디어 유형에 대한 지식 만 있음). 링크가 뜨거울 수 있습니다. 그러나 API를 매우 효율적으로 만들기 위해서는 쿼리 매개 변수에 대한 많은 링크 템플릿이 필요한 것 같습니다. 이로 인해 대역 외 정보가 다시 들어옵니다. 아직 생각하지 못한 다른 어려움이있을 수 있습니다. 개발 단계에 도달했습니다. 그러나 나는 느슨한 결합이라는 생각을 좋아합니다.
런타임 검색은 REST의 성배처럼 보이지만 그러한 클라이언트를 구현하는 방법에 대한 귀중한 논의가 거의 없습니다. 내가 찾은 거의 모든 REST 소스는 개발자 발견을 가정하는 것 같습니다. 누구나 런타임 검색 리소스를 알고 있습니까? 모범 사례? 실제 코드가있는 예제 또는 라이브러리? 한 클라이언트를 위해 PHP (Zend Framework)에서 작업하고 있습니다. 다른 하나는 Objective-C (iOS).
개발자 커뮤니티의 현재 도구 및 지식 세트를 고려할 때 런타임 검색이 현실적인 목표입니까? 모든 URI를 불투명하게 처리하도록 클라이언트를 작성할 수 있지만이를 가장 효율적으로 수행하는 방법은 특히 저 대역폭 연결에서 문제입니다. 어쨌든 URI는 방정식의 일부일뿐입니다. 런타임 컨텍스트에서 링크 템플릿은 어떻습니까? 많은 OPTIONS 요청을하는 것 외에 지원되는 방법을 전달하는 것은 어떻습니까?