Sto progettando un'API per un servizio Web e non riesco a decidere tra l'uso di attributi XML, elementi o un'architettura mista.servizi di web design API: gli elementi XML vs. attributi
Lascia che ti mostri un esempio. Supponiamo di avere un oggetto chiamato Dominio. Questo modello dispone di 3 proprietà (tld
, sld
, trd
e il name
in sé) e un metodo valid?
che restituisce vero se il dominio è valida.
# 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
mio API chiamata /domain/parser
prende un dominio in input e restituisce la risposta analizzata. La prima possibilità è di usare un elemento per ogni attributo di dominio.
<result>
<domain>
<name>www.google.it</name>
<tld>it</tld>
...
<valid>true</true>
</domain>
</result>
Ma alcune interfacce utilizzano attributi.
<result>
<domain tld="it" sld="google.com" trd="www" rule="*.foo" name="www.google.it" valid="true" />
</result>
E non dimenticare attributi e valore.
<result>
<domain tld="it" sld="google.com" trd="www" rule="*.foo" name="www.google.it" valid="true">
www.google.it
</domain>
</result>
Secondo lei, che è la scelta più potente, flessibile ed espressivo? Inoltre, considera che la risposta verrà pubblicata in XML e JSON (a breve).
Altri hanno risposto ai punti principali; ma una nota aggiuntiva è che la questione della rappresentazione JSON alternativa dovrebbe essere ortogonale alla rappresentazione XML. Cioè, la scelta tra elementi e attributi non dovrebbe avere alcun effetto su come JSON dovrebbe essere strutturato. Dato che XML e JSON differiscono strutturalmente, non dovresti convertire tra i due: piuttosto, li produci separatamente ma dallo stesso oggetto che hai. Ciò consente a entrambe le rappresentazioni di essere "ottimali", come nel non essere costretti a usare i mapping per superare le limitazioni (che è fatto da alcuni mapping JSON, per convertire da XML). – StaxMan