Creación de enlaces de hipermedia en un tipo de medio personalizado
Actualmente estoy creando un conjunto de tipos de medios personalizados para una API RESTful (por ejemplo, application / vnd.mycompany.foo + xml) y estoy tratando de identificar los pros y los contras de dos formas diferentes de exponer enlaces hipermedia.
Si primero considero qué otros tipos de medios hacen probablemente el mejor lugar para comenzar es HTML. HTML me permite crear enlaces como:
<image src="http://example.com/image.gif"/>
<a href="http://example.com/page.html"/>
<form action="http://example.com/page.html"/>
<link rel="stylesheet" type="text/css" href="theme.css" />
Lo interesante aquí es que en algunos casos hay algunas etiquetas específicas que tienen un atributo url y luego está la etiqueta de enlace genérica que utiliza el atributo rel para definir la relación.
En AtomPub, también hay algunas formas en que los recursos están vinculados entre sí.
<collection href="http://example.org/blog/main" >
<atom:title>My Blog Entries</atom:title>
<categories href="http://example.com/cats/forMain.cats" />
</collection>
<atom:category scheme="http://example.org/extra-cats/" term="joke" />
<atom:entry>
<link rel="edit" href="http://example.org/edit/first-post.atom"/>
</atom:entry>
La pregunta que me hago es cuándo tiene más sentido usar un elemento de enlace con una relación y cuándo tiene más sentido agregar un atributo a un elemento existente.
p.ej. Los enlaces de AtomPub se podrían haber hecho.
<collection>
<link rel="source" href="http://example.org/blog/main"/>
<atom:title>My Blog Entries</atom:title>
<categories>
<link rel="source" href="http://example.com/cats/forMain.cats"/>
</categories>
</collection>
<atom:category term="joke">
<link rel="scheme" href="http://example.org/extra-cats/"/>
<atom:category>
<atom:entry edit="http://example.org/edit/first-post.atom"/>
Como suele ser el caso, al escribir esta pregunta, la respuesta parece ahora obvia. Los enlaces requeridos están expuestos como atributos y los opcionales como elementos. Sin embargo, estaría muy interesado en escuchar las opiniones de otras personas sobre cómo piensan que los enlaces deberían estar representados.