您是否应该提供Web服务调用结果的验证

时间:2011-09-16 05:36:21

标签: web-services rest

我们正在构建一个返回许多不同类型项目的Web服务。类似于在ebay上请求所有库存的Web服务请求。

有些物品在结构上是众所周知的,比如卡车和挖掘机。其他人则不像烤面包机和音响设备。

即使该类型信息在所有其他项目中不是通用的,我也希望返回项目所具有的所有信息。在下面的例子中,make和Pop Speed就是这样的例子。

所以我可以返回这样的信息

<inventory>
 <truck>
  <title>Massive Truck</title>
  <make>CAT</make>
  <weight>1200</weight>
 </truck>

 <toaster>
  <title>Quick Toaster</title>
  <Popspeed>20</Popspeed>
 </toaster>
</inventory>

但问题是我不能(我不知道一种方法)为此构建一个xsd / schema。 我们还将以JSON格式返回此信息,因此没有架构。

但重要吗?

我原本以为知道返回给你的结构和属性会很好,但也许只有一个口头/ doco协议,这就足够了。

1 个答案:

答案 0 :(得分:0)

看看Hal(http://stateless.co/hal_specification.html)它将完全符合您的要求。在hal中,您使用链接关系来标识嵌入资源的结构。您将无法在其上执行XSD,但您可以使用schematron或relax-ng之类的内容来验证文档。

基于xml的hal版本的文档看起来像:

<resource rel="self" href="http://example.org/inventory" >
   <resource rel="truck" href="http://example.org/inventory/Massive_Truck"> 
      <title>Massive Truck</title>
      <make>CAT</make>
      <weight>1200</weight>
   </resource>
   <resource rel="toaster" href="http://example.org/inventory/Quick_toaster"> 
      <title>Quick Toaster</title>
      <Popspeed>20</Popspeed>
   </resource>
</resource>

正如您将从hal规范中看到的那样,您可以使用等效的JSON表示。