微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

Web服务API设计:XML元素与属性

这个问题在这里已经有一个答案:> XML attribute vs XML element20个
我正在为一个Web服务设计一个API,我无法决定使用XML属性,元素或混合体系结构.

让我举个例子.我们假设我有一个名为Domain的对象.这个模型有3个属性(tld,sld,trd和name本身),一个方法有效?如果域有效,则返回true.

# I'm using ruby but 
# consider this as pseudo-code
class Domain
  attr_accessor :tld,:sld,:trd,:name

  def valid?
    true # force true
  end
end

我的api称为/ domain / parser在输入中接收一个域,并返回解析的响应.第一种可能性是为每个域属性使用一个元素.

<result>
  <domain>
    <name>www.google.it</name>
    <tld>it</tld>
    ...
    <valid>true</true>
  </domain>
</result>

但是一些接口使用属性.

<result>
  <domain tld="it" sld="google.com" trd="www" rule="*.foo" name="www.google.it" valid="true" />
</result>

不要忘记属性和价值.

<result>
  <domain tld="it" sld="google.com" trd="www" rule="*.foo" name="www.google.it" valid="true">
    www.google.it
  </domain>
</result>

在你看来,哪个是更强大,灵活和富有表现力的选择?另外,考虑回应将以XML和JSON(很快)提供.

解决方法

我使用的模式是:

>元素用于数据
属性用于元数据(即关于数据的数据)

如果您使用XSD架构的最多(如果不是全部)您的元数据应该在那里,但如果你没有属性是它的好地方.

所以你的例子我可能会这样做:

<result>
  <domain valid="true">
    <name>www.google.it</name>
    <tld>it</tld>
    ...
  </domain>
</result>

原文地址:https://www.jb51.cc/html/224579.html

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。

相关推荐