2010-06-25 83 views
1

好吧,我爲我的REST Web服務進行了一些操作。在不同的操作之間有一些實體重疊,但是基於我正在做的一些元素/屬性是不相關的。瞭解REST實體(基於請求和響應的變體)

例如,當我請求率我需要找回:

<Property id=」」> 
    <Rooms> 
    <Room> 
     <Rates> 
     <Rate></Rate> 
     </Rates> 
    </Room> 
    </Rooms> 
</Property> 

但當我只想得到房間的列表回 - 我只是想:

<Property id=」」> 
    <Rooms> 
    <Room> 
    </Room> 
    </Rooms> 
</Property> 

和我的GET房申請只需要輸入

<property id=」」></property> 

但基於財產的完整定義 - 當我產生我的樣本getroomsRequest XML結構的,包括一切按照上面的樣本。

我應該聲明不同的命名實體嗎?或者有沒有辦法使用一個共同的實體,但不知何故排除不相關的東西?

謝謝!不確定什麼是可能的/最佳做法。

回答

0

您開始遇到困難的原因是您嘗試在域概念(屬性,房間,費率)與REST資源之間創建直接映射。

在我看來,REST資源應該代表您的系統的使用情況,例如, 「物業/ 1 /房間價格」,「物業/ 1 /房間」。資源更多的是UI層而不是域層。

一些REST框架已經開始實現一些機制,允許您在查詢字符串中指定需要返回哪些數據段。再次,在我看來,這是一個非常糟糕的主意。它嚴重限制了緩存的實用性,並且在客戶端和服務器之間創建了更多的耦合。

不要擔心在REST系統中創建新資源,即使它與業務層中的任何內容都不相關。開發人員在設計基於REST的系統時遇到的大多數問題都可以通過創建一個或兩個新概念作爲資源來解決。