Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/api/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Api REST-如何格式化内容中的链接_Api_Rest_Uri_Hyperlink - Fatal编程技术网

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

Api REST-如何格式化内容中的链接,api,rest,uri,hyperlink,Api,Rest,Uri,Hyperlink,在REST中,所有内容都与链接有关。基本上,API用户只需要一个链接,即顶级链接。这通常是一个或类似的问题。浏览层次结构时会发现所有其他链接。例如,GET/api/可能会给您一个指向/api/users/和/api/images/的链接,而/api/users/可能会给您一个指向/api/users/john/的链接,等等 也就是说,我想知道是否有某种标准如何格式化这些链接。毕竟,如果它都是关于链接的,那么爬虫程序应该能够从顶部开始发现系统中的所有资源 我做了一些调查。XML媒体类型,找不到任何

在REST中,所有内容都与链接有关。基本上,API用户只需要一个链接,即顶级链接。这通常是一个或类似的问题。浏览层次结构时会发现所有其他链接。例如,GET/api/可能会给您一个指向/api/users/和/api/images/的链接,而/api/users/可能会给您一个指向/api/users/john/的链接,等等

也就是说,我想知道是否有某种标准如何格式化这些链接。毕竟,如果它都是关于链接的,那么爬虫程序应该能够从顶部开始发现系统中的所有资源

我做了一些调查。XML媒体类型,找不到任何注意到的标准。让我们选择/users/resource。有些人写

<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没有指定指向资源相关资源的链接的格式?

返回application/xml的问题是没有定义用于指定链接的标准语义。这就是为什么它不是一种很好的超媒体类型。Xhtml是一种更好的方法,它确实为链接指定了一些规则。是另一个更简单的好方法

当指定文档中的链接时,有很多事情要考虑,远不止是HREF。迈克·阿蒙森(Mike Amundsen)在讨论将链接嵌入文档的各个方面方面方面做了一些出色的工作

链接最重要的部分是John Howes提到的rel。rel可以是全局定义的,就像IANA定义的那样。或者,它们可以是您自己的自定义链接,只要您遵循中定义的扩展链接关系规则即可。rel文档告诉客户机开发人员他或她需要知道的关于激活该链接的所有信息

为什么REST没有指定如何链接到 资源是否应该格式化


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

很抱歉,我没有答案(我一直在使用Atom链接),但不管格式如何,您都需要包含一些关于链接所代表的关系类型的内容:。在不知道链接的用途的情况下,你的客户将很难决定如何使用它。你是对的。为了简单起见,我省略了这个。但即便如此,我相信同样的问题也适用:rel=“/rels/new”对非人类意味着什么?我认为这是您的客户开发人员程序所反对的。在整个应用程序中使用一致的rel类型,记录这些rel的含义,您的客户只需要查找rel并跟踪链接。这就需要更长的对话时间(以及其他人的投入)。你想把它变成一个新问题吗?好主意。一旦我完成了更多的研究,我将创建一个新问题。Darrel Miller提供的参考资料是我的第一步。感谢您的澄清,现在它更有意义了。我会查一下你的推荐信。谢谢。虽然您或多或少地回答了“REST规范是否包含链接格式”而不是“为什么REST规范不包含链接格式?”的问题,但这让我理解了REST的范围和全局图。