目前我正在创造一个RESTful API一组自定义的媒体类型(例如,应用/ vnd.mycompany.foo + XML),我试图找出的曝光超媒体链接的两种不同方式的利弊。
如果我先考虑一下其他的媒体类型可能做的,开始是HTML的最佳场所。 HTML允许我创建链接,如:
<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" />
这里有趣的是,在某些情况下,有一个URL属性,再有就是通用的链接标签,使用rel属性来定义的关系,一些特定的标记。
在AtomPub的,也有资源链接在一起的几种方式
<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>
那我问的问题是,当它让使用link元素有关系更有意义,并执行时,它更有意义的属性添加到现有元素。
例如,通过AtomPub链接可能已经完成
<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"/>
由于频繁的情况,以书面形式这个问题,答案现在似乎是显而易见的。 必需的链接被暴露为属性和可选的人的要素。 不过,我会在听到他们是怎么想的链接应该代表别人的意见很感兴趣。