是否有人知道包含Hypermedia as the Engine of Application State(HATEOAS)约束的REST客户端的实现?
Sun Cloud API似乎是一个很好的候选者,从它的记录方式和a statement by the author判断Ruby,Java和Python实现的效果。但到目前为止,我还没有找到任何代码的痕迹。
我正在寻找任何东西 - 即使部分实施也会有所帮助。
答案 0 :(得分:11)
您应该首先看到的是常见的Web浏览器。它是包含HATEOAS的客户的标准(至少在某种程度上)。
这就是超媒体的运作方式。这很简单,几乎是痛苦的:
http://pigs-are-cool.org/
现在简要说明这两个术语与网络浏览体验的关系:
所以HATEOAS实际上描述了当你从网页转到网页时在网络浏览器中发生的事情:
带有嵌入式链接的HTML页面驱动器您在浏览器中随时查看的内容
术语HATEOAS只是这种浏览体验的抽象。
RESTful客户端应用程序的其他示例包括:
RESTful客户端软件的一些特性:
<img src=
)手动(如<a href=
)。通常它们由用户驱动,并且可以正确地称为“用户代理”,但GoogleBot除外。
答案 1 :(得分:6)
Restfulie是一个Ruby,Java和C#框架,旨在支持构建使用HATEOAS的客户端和服务器。我没有使用它,但看起来确实很有趣。
以下是their java project的一些示例代码:
Order order = new Order();
// place the order
order = service("http://www.caelum.com.br/order").post(order);
// cancels it
resource(order).getTransition("cancel").execute();
同样,我不确定它到底是做什么的,或者它在实践中的效果如何,但它看起来确实很有趣。
答案 2 :(得分:2)
REST HTTP和HATEOAS的问题在于没有通用的方法来指定链接,因此很难跟踪链接,因为它们的结构可能会从服务提供者变为另一个。有些人会使用<link href="..." />
其他人会使用专有结构的链接ex。 <book href="..." />
。它不像HTML或原子链接是标准定义的一部分。
客户无法知道您的代表中的链接是什么,除非有标准或传统的链接表示,否则它不知道您的媒体类型
答案 3 :(得分:1)
答案 4 :(得分:0)
富,
我现在正在为Jersey的RESTful客户端框架工作。一旦初始设计稳定了一点,它将被添加到Jersey代码库中,并在通过社区进行审查后最终应该推动JAX-RS的客户端框架的形状。
最近对Jersey用户名单进行了热烈的讨论,讨论了RESTful的所有内容。 https://jersey.dev.java.net/servlets/SummarizeList?listName=users
从现在起大约两周后,代码首次公开让人们进行实验。
扬
答案 5 :(得分:0)
Spring Framework的RestTemplate可用于实现此目的。有关详细信息,请查看此article。