Erstellen von Hypermedia-Links in einem benutzerdefinierten Medientyp

Ich erstelle derzeit eine Reihe benutzerdefinierter Medientypen für eine RESTful-API (z. B. application / vnd.mycompany.foo + xml) und versuche, die Vor- und Nachteile zweier verschiedener Möglichkeiten zum Offenlegen von Hypermedia-Links zu ermitteln.

Wenn ich zuerst überlege, was andere Medientypen tun, ist HTML wahrscheinlich der beste Ausgangspunkt. Mit HTML kann ich Links erstellen wie:

<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" />

Das Interessante dabei ist, dass es in einigen Fällen bestimmte Tags gibt, die ein URL-Attribut haben, und dann gibt es das generische Link-Tag, das das rel-Attribut verwendet, um die Beziehung zu definieren.

In AtomPub gibt es auch einige Möglichkeiten, wie Ressourcen miteinander verknüpft werden

<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>

Die Frage, die ich stelle, ist, wann es sinnvoller ist, ein Verknüpfungselement mit einer Beziehung zu verwenden, und wann es sinnvoller ist, einem vorhandenen Element ein Attribut hinzuzufügen.

z.B. die AtomPub-Links hätten gemacht werden können

<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"/>

Wie es häufig der Fall ist, scheint die Antwort beim Schreiben dieser Frage nun offensichtlich zu sein. Die erforderlichen Links werden als Attribute und optionale Links als Elemente angezeigt. Ich wäre jedoch sehr daran interessiert, die Meinungen anderer zu hören, wie Links ihrer Meinung nach dargestellt werden sollten.

Antworten auf die Frage(3)

Ihre Antwort auf die Frage