HATEOAS的实例(REST架构)

正如大家可能已经注意到的那样,在野外有很多假的/基本的REST-API(它实现了一个HTTP-API并称之为REST,而没有遵循超文本作为引擎的应用程序状态要求,着名的罗伊·T·菲尔丁(Roy T. Fielding )的咆哮,他是第一个指定REST范式的人)。

我一直无法find任何真正的超文本驱动的REST实现的实例,以及与状态转换相关的特定于应用程序的媒体types定义。

有这样的实现的公共可访问的例子吗?

它不是运行代码意义上的实现,但我非常喜欢InfoQ上的文章“ 如何获得一杯咖啡 ”。 它描述了星巴克作为RESTful协议订购咖啡的过程。 这超出了典型的“一切都是资源”REST入门文章,并侧重于HATEOAS。 强烈推荐。

Sun Cloud API如何? 从介绍:

API预先假定URI空间中没有特定的结构。 起点是由云服务提供商提供的URI,它识别云本身。 云的表示包含云中其他资源的URI,也包含可能在其上执行的操作(例如部署和启动虚拟机)。

背景故事也可能有帮助。

Netflix拥有基于HATEOAS的REST API ,其中包含链接作为资源的一部分。

我意识到这是前一阵子被问到的,但我用一个简单的例子来certificate一个“正确的”REST APIstream程。 我试图遵循Roy的REST规则 – 也许可以帮助: 使用REST的API示例

在Roy的第四点中,实际上并不是Sun Cloud API的RESTfulness:

REST API不能定义固定的资源名称或层次结构(客户端和服务器明显的耦合)。 服务器必须有自由来控制自己的命名空间。 相反,允许服务器通过在媒体types和链接关系中定义这些指令来指导客户如何构build适当的URI,例如在HTML表单和URI模板中完成。 [这里的失败意味着客户端由于带外信息(例如特定于领域的标准,这是面向数据的RPC等效于RPC的function耦合)正在假设资源结构)。

示例1在定义的heirachy中修复了资源名称:

从Sun Cloud API:“… VDC的表示将包括居于其中的集群的表示,其中又包括每个集群内的VM的表示。

示例2带外信息,例如特定于域的标准:

您必须具有维基页面内容(带外信息)才能知道云资源字段“uri”的“资源通信机制”是GET。