显示webservices是否公开嵌套列表或平面列表?

时间:2016-07-18 10:12:37

标签: json xml web-services soap

在设计T时,无论是webservicesoap还是xml:您更喜欢扁平列表还是嵌套列表?

示例:

嵌套:

json

平的:

<carRequest>
   <cars>
     <car>
       <manufature />
       <price />
       <description />
     </car>
     <car>
       <manufature />
       <price />
       <description />
     </car>
   </cars>
</carRequest>

一个人的优势是什么?

1 个答案:

答案 0 :(得分:6)

与个人风格,工具(默认配置,限制或易用性)相结合的优点和缺点,需要从单个对象表示支持多种MIME类型等。我不打算进入所有这些 - 因为对某些人有用的可能不是其他人的好解决方案 - 但我只是想指出一些事情......

哪一个看起来更自然,扁平元素还是包裹元素?人们通常如何看待重复元素?例如,<manufature><price><description>包含在<car>元素中。为什么?因为它们是相关的并且一起形成一个结构。多个<car>也相关并形成一个结构:<car>的列表。它在您的表示和XML模式中更具表现力,更具可读性。但当然,现在我们进入个人喜好和全面战争......

包裹元素还有另一个优点。如何表达空车列表与空车列表?

如果元素是扁平的并且你没有汽车,那么当你将它拆分成一个物体时它会代表什么呢?

<carRequest>
</carRequest>

您的请求是cars = null还是cars = []?你不知道。

如果您使用嵌套元素,那么cars = null就是:

<carRequest>
</carRequest>

虽然cars = []是这样的:

<carRequest>
  <cars>
  </cars>
</carRequest>

既然你提到了SOAP,你可能在某些时候需要考虑跨技术和工具的互操作性(参见Why is it important to be WS-I Basic Profile compliant?),其中规定了XML在SOAP消息中的外观。 The style called document/literal wrapped pattern is preferred

这是一个广泛的主题,作为一个TL; DR我只能想到"choose your poison"。我希望我的回答对你有帮助。