2010-06-25 82 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的系统时遇到的大多数问题都可以通过创建一个或两个新概念作为资源来解决。