HATEOAS的好用例

时间:2014-03-22 08:45:59

标签: web-services rest hateoas eve

我可能有HATEOAS的一些示例/典型用例吗?我同意它可以是一个非常强大的概念,提供很大的灵活性,但我不确定如何从HATEOAS中获益。如果您可以分享您的经验/用例,那将是很棒的。

3 个答案:

答案 0 :(得分:8)

以上@dreamer的一个很好的答案,但大多数基于REST的服务中都没有HATEOAS。它是REST架构风格的约束,允许客户端完全通过资源中包含的超媒体与服务进行交互。

如果您查看Twitter或Facebook REST API,您将无法找到超媒体。查看Facebook friendlist资源。该资源中没有可用于转换资源状态的超文本链接 - 删除,更新等。相反,您需要阅读带外文档以了解删除该内容时需要执行的操作资源。

在API中使用超媒体的一个主张是,您可以在资源本身内管理变更。例如,如果Facebook想要在frendlist中添加其他功能,该怎么办?如果它是在考虑HATEOAS的情况下构建的,则会更新资源以添加超链接,从而提供那些额外的状态转换。

如果这听起来很难,那你就是对的。但是,作为客户端应用程序的开发人员,一旦了解了超媒体的呈现方式,就可以构建与API本身一起发展的应用程序。

那么如何使用HATEOAS构建API?有很多选项,但我最喜欢Hypertext Application Language (HAL)

更新:由于您要求提供示例,以下是使用HAL的demo链接。

答案 1 :(得分:6)

良好的公共HATEOAS用例很难找到,因为围绕REST存在很多误解,而HATEOAS很难实现。你真的需要很好地理解它的好处,在你愿意让自己完成它的工作之前,如果客户没有正确地遵循它,那么所有的工作都将是徒劳的。

根据我的经验,在公司中实施适当的REST是一种文化变革,与迁移到版本控制系统或敏捷开发一样重要。除非每个人都采用它并理解它,否则会造成比它解决的更多麻烦。

考虑到这一点,我认为最好的例子是foxycart.com HAL API,在下面的链接中:

https://api-sandbox.foxycart.com/hal-browser/hal_browser.html#/

答案 2 :(得分:0)

这是在RESTful向客户端呈现应用程序时使用的非常强大的概念。现在有许多项目采用这种界面。一个典型的用例是Web Services APIs使用RESTful API。 RESTful API通常包含以下元素:

  • 基本URI,例如http://example.com/resources/
  • 数据的Internet媒体类型。这通常是JSON,但可以是任何其他有效的Internet媒体类型(例如XML,Atom,微格式,图像等)。
  • 标准HTTP方法(例如,GET,PUT,POST或DELETE)
  • 指向参考状态的超文本链接
  • 指向相关资源的超文本链接

可以使用上面的HTTP methods来修改应用程序状态,以获取特定资源,客户端可以使用REST query发出curl,如:

curl -X GET --url "http://example.com/resource/" -X "Content-Type:application/json"

您可以浏览man pages curl及其用法。有关RESTful接口概念的更多信息,请参阅wiki