在设计T
时,无论是webservice
,soap
还是xml
:您更喜欢扁平列表还是嵌套列表?
示例:
嵌套:
json
平的:
<carRequest>
<cars>
<car>
<manufature />
<price />
<description />
</car>
<car>
<manufature />
<price />
<description />
</car>
</cars>
</carRequest>
一个人的优势是什么?
答案 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"。我希望我的回答对你有帮助。