Je conçois une API pour un service Web et je ne peux pas décider entre l'utilisation d'attributs XML, d'éléments ou d'une architecture mixte. Je vais vous montrer un exemple.Conception d'API de services Web: éléments XML et attributs
Supposons que j'ai un objet appelé Domaine. Ce modèle a 3 propriétés (tld
, sld
, trd
et name
lui-même) et une méthode valid?
qui renvoie true si le domaine est valide.
# 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
Mon api appelé /domain/parser
prend un domaine en entrée et renvoie la réponse analysable. La première possibilité consiste à utiliser un élément pour chaque attribut de domaine.
<result>
<domain>
<name>www.google.it</name>
<tld>it</tld>
...
<valid>true</true>
</domain>
</result>
Mais certaines interfaces utilisent des attributs.
<result>
<domain tld="it" sld="google.com" trd="www" rule="*.foo" name="www.google.it" valid="true" />
</result>
Et n'oubliez pas les attributs et la valeur.
<result>
<domain tld="it" sld="google.com" trd="www" rule="*.foo" name="www.google.it" valid="true">
www.google.it
</domain>
</result>
À votre avis, qui est le choix le plus puissant, flexible et expressif? En outre, considérez que la réponse sera servie dans XML et JSON (bientôt).
D'autres ont répondu à des points principaux; mais une remarque supplémentaire est que la question de la représentation JSON alternative doit être orthogonale à la représentation XML. C'est-à-dire que votre choix d'éléments et d'attributs ne devrait avoir aucun effet sur la façon dont JSON devrait être structuré. Puisque XML et JSON diffèrent structurellement, vous ne devriez pas convertir entre les deux: plutôt, les produire séparément, mais à partir du même objet que vous avez. Ceci permet aux deux représentations d'être "optimales", comme de ne pas être obligé d'utiliser des mappages pour surmonter les limitations (ce qui est fait par certains mappages JSON, pour convertir à partir de XML). – StaxMan