我可能有HATEOAS的一些示例/典型用例吗?我同意它可以是一个非常强大的概念,提供很大的灵活性,但我不确定如何从HATEOAS中获益。如果您可以分享您的经验/用例,那将是很棒的。
答案 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通常包含以下元素:
可以使用上面的HTTP methods
来修改应用程序状态,以获取特定资源,客户端可以使用REST query
发出curl
,如:
curl -X GET --url "http://example.com/resource/" -X "Content-Type:application/json"
您可以浏览man pages
curl
及其用法。有关RESTful接口概念的更多信息,请参阅wiki