了解REST实体(基于请求和响应的变体)

时间:2010-06-25 05:49:59

标签: xml rest

好的,我的REST Web服务有一些操作。不同操作之间存在一些实体重叠,但基于我正在做的事情,一些元素/属性是不相关的。

EG。当我要求费率时,我需要回来:

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

但是当我想要获得一份房间清单时 - 我只想要:

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

我的获取房间请求仅需要输入

<property id=””></property> 

但是基于属性的完整定义 - 当我生成我的样本getroomsRequest xml结构时,它包含了根据顶部样本的所有内容。

我应该宣布不同的命名实体吗?或者有没有办法使用一个共同的实体但不知何故在不相关时排除东西?

谢谢!不确定什么是可能的/最佳实践。

1 个答案:

答案 0 :(得分:0)

您开始遇到困难的原因是您尝试在域概念(属性,房间,费率)和REST资源之间创建直接映射。

在我看来,REST资源应代表您系统的用例,例如: “物业/ 1 / RoomRates”,“物业/ 1 /客房”。资源更多的是UI层而不是域层。

一些REST框架已经开始实现允许您在查询字符串上准确指定需要返回哪些数据的机制。在我看来,这是一个非常糟糕的主意。它严重限制了缓存的有用性,并在客户端和服务器之间创建了更多的耦合。

不要担心在REST系统中创建新资源,即使它与业务层中的任何内容都不相关。在设计基于REST的系统时,开发人员遇到的大多数问题都可以通过创建一个或两个新概念作为资源来解决。