REST客户端实现拥抱HATEOAS约束?(REST Client Implementation E

2019-06-26 18:05发布

是否有人知道一个REST客户端,涵盖的约束的实现的超媒体作为应用状态的引擎 (HATEOAS)?

在Sun云API似乎是一个不错的选择,从它的记录的方式,判断由作者声明该红宝石,Java和Python的实现是在作品中的效果。 但到目前为止,我没有发现任何代码的痕迹。

我在找什么 - 甚至在部分实施将是有益的。

Answer 1:

你应该看看的第一件事情是常见的Web浏览器。 正是出于这一涵盖HATEOAS(至少在一定程度上)的客户端的标准。

这是超媒体是如何工作的。 它是如此简单,它几乎痛苦:

  1. 您将浏览器指向http://pigs-are-cool.org/
  2. 浏览器加载HTML页面,图片,CSS等。
    • 在这一点上,应用程序(您的浏览体验)是在一个特定的URI。
    • 该浏览器是表示URI的内容
  3. 你看到在应用程序的链接
  4. 单击该链接
  5. 浏览器遵循链接
    • 在这一点上,应用程序是不同的URI
    • 浏览器正显示出新的URI的内容

现在两个方面如何与网页浏览体验的简短说明:

  • 超媒体= HTML页面与嵌入式链接
  • 应用程序状态=你在浏览器在任何时间点看到的。

所以HATEOAS实际上描述了在Web浏览器中会发生什么,当你去从网页到网页:

HTML页面的嵌入式链接什么你在浏览器在任何时间点看

术语HATEOAS只是这个浏览体验的抽象。

REST风格的客户端应用程序的其它例子包括:

  • RSS和feed阅读器。 他们遍历用户给他们的链接
  • 大多数博客的AtomPub客户。 他们只是需要一个URI到服务文件,并从那里找出上传图片和博客,搜索等。
  • 也许谷歌小工具(以及类似),但它们仅仅是浏览器在不同的皮肤。
  • 网络爬虫也REST风格的客户,但他们是一个利基市场。

REST式客户端软件的一些特征:

  • 然后,客户端与任何服务器,因为它与某些URI底漆和服务器与预期的结果(例如,对于一个原子博客客户端,一个Atom服务文档)响应。
  • 客户端一无所知服务器如何设计比其他公司的URI它可以在运行时发现
  • 客户知道的足够多的媒体类型和链接关系来了解服务器说法(如Atom或RSS)
  • 客户端使用嵌入式链接找到其他资源; 一些自动(如<img src= )一些手动(如<a href= )。

很多时候,他们是由用户驱动的,并能正确地被称为“用户代理”,除了,说了Googlebot。



Answer 2:

Restfulie是一个Ruby,Java和C#的框架,目的在于使建筑客户端和服务器其采用HATEOAS。 我没有用它,但它看起来有趣。

下面是一些示例代码的Java项目 :

Order order = new Order();

// place the order
order = service("http://www.caelum.com.br/order").post(order);

// cancels it
resource(order).getTransition("cancel").execute();

同样,我不知道到底是什么这样做,或有多好它的工作原理在实践中,但它似乎耐人寻味。



Answer 3:

与REST HTTP和HATEOAS的问题是,存在于指定链接,这样就很难跟踪链接,因为它们的结构可能会从服务提供商到另一个变化没有常见的方法。 有些人会使用<link href="..." />其他人会使用专有结构的链接恩。 <book href="..." /> 它不是在HTML或原子是链接等定义的标准的一部分。

客户端无法知道一个链接是什么在你的表现是它不知道你的媒体类型,除非有一个环节的标准或常规表示



Answer 4:

该HATEOAS设计原理(REST是一套设计原则也)意味着每个资源应该有至多一个单一固定的URL。

其他一切相关的应该是发现动态地从通过“超媒体”链接,URL。

我刚开始一个维基百科存根这里



Answer 5:

丰富,

我现在很努力的泽西一个RESTful客户端框架。 一旦最初的设计stabelizes位将被添加到泽西代码库,并通过社区开展的审查最终应该带动JAX-RS的客户端框架的形状后。

已经有泽西用户列表最近关于万物的RESTful上了热烈的讨论。 https://jersey.dev.java.net/servlets/SummarizeList?listName=users

它应该是两个星期左右,从现在的代码去公众在第一时间对人进行试验。

一月



Answer 6:

Spring的RestTemplate可以用来达到目的。 检查此文章的详细信息。



文章来源: REST Client Implementation Embracing HATEOAS Constraint?
标签: rest hateoas