我们正在构建一个返回许多不同类型项目的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协议,这就足够了。
答案 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表示。