HATEOAS的好用例

Joh*_*ohn 13 rest web-services hateoas eve

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

Pet*_*erB 8

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

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

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

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

那么如何使用HATEOAS构建API?有很多选项,但我最喜欢超文本应用语言(HAL).

更新:由于您要求一个示例,这里是使用HAL 的演示的链接.


Ped*_*eck 6

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

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

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

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


Ank*_*mar -1

这是一个非常强大的概念,用于RESTful向客户展示应用程序。现在有很多很多项目都在采用这个接口。一个典型的用例是Web Services APIs使用 RESTful API。RESTful API 通常包含以下元素:

  • 基本 URI,例如http://example.com/resources/
  • 数据的 Internet 媒体类型。这通常是 JSON,但也可以是任何其他有效的互联网媒体类型(例如 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"
Run Code Online (Sandbox Code Playgroud)

你可以浏览一下man pagesforcurl及其用法。有关 RESTful 接口概念的更多信息可以查看wiki