2009-06-08 3 views
2

POST에 사용되는 ReST 웹 서비스 - 데이터베이스에 데이터 삽입 (XML에서 데이터 언 마샬링) 및 데이터 가져 오기 (XML로 마샬링)로 GET.데이터베이스에 매핑하는 XML 및 XSD를 사용하는 모범 사례

XSD는 데이터베이스와 데이터를 마샬링/언 마샬링하기 위해 Sun의 JAXB 컴파일러를 통해 Java 객체를 생성하는 데 사용됩니다. 우리는 일종의을 그대로 그대로 두었습니다.이 모델은 데이터를 완벽하게 모델링 한 것으로 생각했기 때문에 - 실제로는 에 게시하기 만하면 데이터를 게시합니다.

데이터베이스의 데이터가 GET 일 때 현재의 XSD를 "깨뜨려야"하며 POST 유형 요청이 신경 쓰지 않는 기본 키와 다른 데이터 값을 게시 할 수 있습니다. , 그들은 불필요합니다.

이제 XSD에는 선택 요소 (예 : GET 요청에만 사용되는 요소)가 있습니다. 이렇게하면 웹 서비스를 사용하고자하는 제 3 자에게 설명해야 할 때 잠재적 인 혼란을 야기 할 수 있으며 데이터를 가져오고 게시하는 일종의 성격을 가진이 XSD를 가질 수 있습니다. 예전처럼 깨끗하고 우아하지도 않습니다.

어떻게해야합니까? XSD에 데이터를 가져 오는 것과 같은 특정 상황에서만 사용되는 요소가 있으면 괜찮습니까? 또는 2 개의 XSD가 있어야합니까? 하나는 좀 더 자세한 정보로 GET 요청에 맞추어지고 하나는 슬림화됩니다.

많은 도움과 조언을드립니다.

답변

1

나는 비슷한 상황에 처해 있었고, 내가 "읽기"목적으로 사용했던 견해를 만들었습니다. 필자는 메인 테이블과 동일한 XSD에 뷰를 매핑하여 한 곳에서 모든 것을 관리 할 수있었습니다. 그것은 내 기본 데이터 배열을 손상시키는 걱정없이 "느슨한"독서의 융통성을주었습니다.

+0

가장 깨끗한 해결책 - 최적이라고 생각합니까? – Vidar

+1

XSD 정의 또는 코드가 두통을주는 기본/외래 키 제한을 제거하는 빠르고 간단한 방법이 없다면, 이것이 최선의 방법이라고 말할 수 있습니다. 일어나는 다른 질문은 당신이 노출하고있는 방법이 얼마나 많은지입니다. 내가 통합의 팬이라면 너무 많은 기능을 하나의 요소로 밀어 넣는 것도 악몽 일 수 있습니다. –

1

일부 컨텍스트에서만 사용되는 필드는 적절하게 문서화하는 한 XML 문서에서 유효합니다. UDDI (예, 철저하게 비 REST 및 비 냉각 예) 알고 있습니다. POST 및 PUT과 유사하게 UDDI의 항목을 "저장"또는 "업데이트"할 때 서버가 처리 할 내용을 알 수 있도록 게시 된 데이터에 고유 한 ID를 제공해야합니다. 여기서 이점은 데이터 구조에 대한 대부분의 작업 (CRU에 대해서는 처리되지만 UDDI에서는 항상 D에 해당하는 것은 아님)에 대해 하나의 스키마 요소와 하나의 결과 데이터 구조가 있음을 의미합니다. RESTful이며 리소스 URL의 고유 식별자를 나타낼 수 있으므로이 접근법은 응용 프로그램에 대해 이해하기 어려울 수 있습니다. 고려해야 할 한 가지는 검색된 데이터가 검색 후 전달되는 경우입니다. 데이터가 자체 포함되어 있어야하고 고객의 다양한 컨텍스트 사이에서 또는 다른 컨텍스트 사이를 통과해야하는 경우 ID를 포함하면 두 가지 데이터 (실제 데이터를 처리 할 필요가 없으므로 서비스 사용자에게 도움이 될 가능성이 높습니다. 데이터 및 고유 식별자). 즉, 클라이언트는 REST/XML 상호 작용을 완전히 추상화 할 수 있습니다.이 경우 추상화는 이미 데이터 구조의 ID 및 나머지 필드를 처리했을 것입니다.

관련 문제