Tworzenie hipermedia odsyłaczy w niestandardowym typie mediów
Obecnie tworzę zestaw niestandardowych typów multimediów dla api RESTful (np. Application / vnd.mycompany.foo + xml) i próbuję zidentyfikować zalety i wady dwóch różnych sposobów ujawniania hipermedia linków.
Jeśli najpierw zastanowię się, jakie inne typy mediów robią, najlepszym miejscem do rozpoczęcia jest HTML. HTML pozwala mi tworzyć linki takie jak:
<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" />
Interesującą rzeczą jest to, że w niektórych przypadkach istnieją pewne konkretne znaczniki, które mają atrybut url, a następnie istnieje ogólny znacznik łącza, który używa atrybutu rel do zdefiniowania relacji.
W AtomPub istnieje również kilka sposobów łączenia zasobów
<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>
Pytanie, które zadaję, dotyczy tego, kiedy bardziej sensowne jest użycie elementu łącza z relacją, a kiedy ma sens dodawanie atrybutu do istniejącego elementu.
na przykład linki AtomPub mogły zostać wykonane
<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"/>
Jak to często bywa, pisząc to pytanie, odpowiedź wydaje się teraz oczywista. Wymagane łącza są wyświetlane jako atrybuty i opcjonalne jako elementy. Byłbym jednak bardzo zainteresowany wysłuchaniem opinii innych osób na temat tego, jak ich zdaniem powinny być reprezentowane linki.