2009-05-08 5 views
6

간단한 데이터 모델과 함께 REST를 사용하는 예가 많이 있습니다. 예를 들어 5 개의 속성이있는 고객과 6 개의 속성이있는 주문 모음입니다. 그러나 나는 정부 조달, 금융, 의료 기록 관리 등에서 찾을 수있는보다 복잡한 모델에 대해 REST를 사용하여 시각화하는 데 어려움을 겪고 있습니다. 큰 LOB 환경에 기본 API로 사용되는 REST의 예가 있습니까?REST는 대형 3NF 모델에 적합합니다.

아마도 REST 방식에서 너무 많이 묻고 싶습니까?

답변

6

현재 250 개가 넘는 리소스가있는 REST 인터페이스를 구축 중입니다. 내가 끝낼 때까지 나는 1000 개가 넘을 것으로 예상한다. 이것은 회계, 재고, 판매, 인건비, 엔지니어링 등을 다루는 ERP 애플리케이션이다.

단일 자원의 크기 나 복잡성은 직접적으로 다르지 않다. REST와 관련이 있지만 미디어 유형에 대한 관심이 높습니다. 필자는 클라이언트를 구축 할 때 자신의 미디어 유형을 정의하는 경로를 선택했으며 인터페이스는 공용으로 사용할 수 없습니다. 상황에 가장 적합한 미디어 유형을 선택하는 것은 아마도 REST 인터페이스를 설계하는 가장 어려운 부분 중 하나 일 것입니다.

불행히도 대부분의 사람들은 미디어/유형 결정에 펀트하고 일반 응용 프로그램/json 또는 application/xml을 선택한 다음 브라우저에서 다운로드 한 자바 스크립트를 사용하여 형식을 해석합니다. 당신이 가지고있는 유일한 클라이언트가 브라우저 일 때만 작동하며 다른 사람이 귀하의 인터페이스를 다시 사용하기를 원하지 않습니다. 저에게 그것은 느슨한 결합과 표준화 된 포맷으로 인한 뜻밖의 재사용과 같은 REST의 주요 목표 중 하나를 무력화시키는 것 같습니다.

나는 이것이 무엇을 의미하는지 더 설명하기 위해 application/json 또는 application/xml을 클라이언트 응용 프로그램에 전달하는 경우를 생각해보십시오. 클라이언트 응용 프로그램이 해당 일반 형식에 도달하고 특정 데이터를 가져 오면 클라이언트와 서버 간의 숨겨진 결합이 만들어집니다. 대신에 "application/vnd.mycompany.myformat + xml"미디어 형식을 사용하면 클라이언트와의 계약을 명시 적으로 정의합니다. 이것은 형식을 변경하고 "application/vnd.mycompany.myformatV2 + xml"을 생성 할 때 큰 이점이 있습니다.

사람들은 REST가 느슨하게 지정된 인터페이스로 인식하지만 실제로는 그렇지 않습니다. . REST 인터페이스는 리턴하고 수신 할 것으로 예상되는 정확한 미디어 유형에서 매우 명시 적이어야합니다. 미디어 유형은 계약입니다. application/xml을 받고 클라이언트 코드를 사용하여/Customer/Name을 꺼내면 계약이 파기됩니다.

다운로드 된 javascript를 사용하는 웹 응용 프로그램은 계약서 세부 정보가 클라이언트로 컴파일되지 않기 때문에 "application/xml"을 사용할 수 있습니다. 그러나 클라이언트의 행동은 javascript가 미리 프로그래밍되어있는 것을 수행하는 데 극도로 제한됩니다. 안타깝게도 대부분의 공용 RESTful 인터페이스는이 제약 조건을 무시하고 사람들은 지정되지 않은 계약에 밀접하게 연결된 클라이언트를 작성합니다. 그래서 트위터가 형식을 바꿀 때 많은 고객이 깨집니다.

+0

이것은 매우 상호 작용하는 것으로 들리며, 정확히 내가 찾고 있었던 종류입니다. 그러나 나는 당신이 "대부분의 사람들이 미디어/타입 결정에 펀 트툰 것"이라는 말에 대해 명확하지 않습니다. 어떻게 미디어 유형을 정의하는 것이 도움이 될까요? –

+0

이 답변을 두 번 이상 upvote하고 싶습니다! – migu

0

REST는 도달하고자하는 데이터를 설명하는 합리적인 설명 경로가있는 한 적합합니다.

REST는 REST 철학을 사용하여 개발 된 API가 API를 게시 할 때 RESTful이라고 느껴지지 않습니다.

설명을 통해 데이터 구조 작업의 복잡성에 관계없이 REST를 매우 잘 준수해야합니다. REST는 게시 스키마를 금지하지 않으므로이를 고려할 수도 있습니다.

5

REST는 아키텍처 스타일로 데이터를 나타내지 않습니다. 일반적으로 오늘날 데이터는 XML 또는 JSON으로 표현됩니다.이 테스트에서는 전투 테스트를 거쳤으며 참조하는 대규모 복잡한 모델을 쉽게 지원할 수 있습니다.

가장 기본적인 형식의 REST는 단순히 "리소스"를 제어하는 ​​HTTP 동사입니다. 해당 리소스의 표현은 필요한만큼 간단하거나 복잡 할 수 있습니다. CRUD와리스트 작업이 가장 직접적입니다. 이 문맥에서 더 복잡한 API를 쉽게 생성 할 수 있습니다.

+0

+1, 멋진 전망을 제공합니다. – cgp

+0

멋진 답변 - 간결! –

관련 문제