什么是超媒体,超媒体控件,超媒体格式

我正在阅读“休息练习”一书。 我无法理解以下术语超媒体,超媒体格式,超媒体控件,域应用程序协议。 作者建议需要特定领域的超媒体格式。 我很难理解这些。 我google了这些条款,但无法找到正确的答案。 任何人都可以解释这些术语,为什么我们需要特定领域的超媒体格式而不是application / xml?


超媒体=事实上,客户端和服务器正在谈论一些统一的表示,例如:超链接。


超媒体控制=资源需要在其上进行操作。 因此,例如,产品由超链接域/ product / 001表示,然后可以通过超媒体控制域/产品/ 001 /编辑和域/产品/ 001 /删除操作(编辑和删除)资源。


最大的区别在于方法。 程序系统首先将操作写成顺序代码(java等)中的状态转换,然后将交互作为超链接进行制作以提供HATEOAS。

但系统直接作为交互模型进行交互模型建模,因此直接提供超链接。 示例示例是http://www.masterkube.com/hateoas_technology.html在这里。

希望这可以帮助。


关于这一点有很多困惑,因为大多数自称为REST的应用程序不使用超媒体,而根本不是REST。

超媒体是HTML以外的内容的超文本概括。 你可以说超文本是超媒体的一个子集。 超媒体可以是浏览器中的HTML,包含所有链接,按钮和呈现的所有内容,以便浏览网站,或者可以是XML或JSON文档,以便由自动客户端解析,也可以跟随链接和操作人类会使用浏览器,点击呈现的链接和按钮。

HATEOAS意味着客户端与REST应用程序的交互必须由超媒体驱动,或者简单地说,客户端应该通过遵循资源本身表示中的链接来获取其所需的每个资源的所有URI,而不是依靠out-像许多API所做的那样,可以使用带外信息,如文档中给出的URI模式。

这比听起来简单。 这仅仅意味着客户端和REST应用程序之间的交互应该与浏览网站的人类完全相同。 以堆栈溢出本身为例。 有用户,问题和答案。 当你想看到你的问题列表,你不会去文档网站,获得一个URI模板来列出你的问题,用你的用户ID填写一个占位符,并将其粘贴到你的brownser上。 您只需点击指向问题列表的另一个文档的链接,您甚至不关心确切的URI是什么。 这就是HATEOAS在实践中的含义。

超媒体形式定义了客户端和服务器之间的契约。 这是您在超媒体应用程序中用于特定资源表示的启用超链接的数据格式。 例如,如果您有一个用户资源,则必须记录客户端应该从该资源的表示中期望什么,以及如何解析表示以提取信息。 在与您的API交互之前,您的客户需要实施解析器来提取信息,他们需要知道资源具有哪些属性以及它们的含义,它们应该期望的链接关系以及可用的状态转换等。

超媒体控件是以超媒体格式的协议方法和链接关系的组合,它告诉客户端可用的状态转换以及如何执行它们。 例如,一个问题可能有一个rel=post_answer链接,它需要一个Answer表示作为POST方法的负载,并且会创建一个与它相关的新的Answer资源。

一旦你定义了一套超媒体格式,你需要一个特定领域的媒体类型来确定什么超媒体格式被用于特定的交互。 像application/xml这样的通用媒体类型只告诉客户端如何解析数据格式,并没有说明解析器提取的信息。 例如,假设一个文档具有媒体类型application/vnd.mycompany.user.v1+xml ,客户端就知道它是XML格式的用户资源的1.0版本表示。 如果通过添加或删除属性,链接等来更改资源,则可以更改版本号,并且客户端不会中断,因为他们可以通过使用Accept标头请求实现的版本。 您还可以为同一资源提供多种格式,如XML或JSON,甚至可以在HTML中使用人眼可读的表示形式。

当你将所有东西包装在一起时 - 底层协议HTTP; 由超媒体格式和媒体类型定义的合同 - 您拥有您的域应用程序协议 ,这是应用程序公布的整套资源和可用状态转换。

毋庸置疑,您在互联网上找到的所谓REST API中有99%并不遵循所有这些。 它们中的大多数都是简单的HTTP API,它们遵循一些REST约束,有时是因为它们并不真正需要所有这些约束,有时是因为这正是开发人员认为REST真正的原因。

链接地址: http://www.djcxy.com/p/71467.html

上一篇: what is hypermedia , hypermedia controls, hypermedia formats

下一篇: Why use XML(SOAP) when JSON so simple and easy to handle?