REST - 如何格式化内容中的链接

时间:2011-07-17 13:20:25

标签: api rest uri hyperlink

在REST中,它完全与链接有关。基本上,API用户只需要一个链接,即顶级链接。这通常是http://server/api/或类似的东西。浏览层次结构时会发现所有其他链接。例如,GET / api / 可能会为您提供指向 / api / users / / api / images / /的链接api / users / 可能会为您提供 / api / users / john / 的链接,依此类推。

那就是说,我想知道是否有某种标准如何格式化这些链接。毕竟,如果一切都与链接有关,那么抓取工具应该能够从顶部开始发现系统中的所有资源吗?

我做了一些研究。 XML媒体类型,找不到任何标注的标准。我们选择 / users / 资源。有人写

<users>
    <user name='john' uri='/users/john'/>
    <user name='steve' uri='/users/steve'/>
</users>

其他人写

<users>
    <user name='john' link='/users/john'/>
    <user name='steve' link='/users/steve'/>
</users>

其他人使用xlink,例如:

<users>
    <user name='john' xlink:href='/users/john'/>
    <user name='steve' xlink:href='/users/steve'/>
</users>

等等。

我可能在这里不知道,但是不应该有某种标准规定如何格式化到其他资源的链接,因此没有任何关于如何格式化数据的知识?换句话说,应用程序A1的API的爬虫X可能不适用于应用程序A2的API,因为A1将其链接格式设置为与A2不同。

在上面,我只是谈论XML媒体类型。当你使用JSON时,现场还有更多的版本。

为什么REST没有指定如何格式化资源相关资源的链接?

2 个答案:

答案 0 :(得分:5)

返回application / xml的问题在于没有为指定链接定义标准语义。这就是为什么它不是一个非常好的超媒体媒体类型。 Xhtml是一个更好的指定链接规则。 HAL是另一个更简单的好事。

在文档中指定链接时要考虑很多事情,远远不只是href。 Mike Amundsen与hfactor做了一些很好的工作,讨论了将链接嵌入到文档中的各个方面。

链接中最重要的部分是John Howes提到的rel。 rel可以是全局定义的,如IANA定义的here。或者,只要您遵循RFC 5988中定义的扩展链接关系规则,它们就可以是您自己的自定义规则。 rel文档告诉客户端开发人员他们需要了解有关激活该链接的所有信息。

答案 1 :(得分:2)

  

为什么没有REST指定如何链接到相关资源   资源应格式化?

Darrel有一个很好的看法,但直接回答你的问题:REST是一种风格,它在一个体系结构中实现,利用协议,利用媒体类型。它应该是指定如何格式化链接的媒体类型。因此REST本身不指定格式。它指定了如何约束标准类型指定链接格式的数据元素交互的排列。