我可以有一些HATEOAS的示例/典型用例吗?我同意这是一个非常强大的概念,可以提供很大的灵活性,但是我不确定如何适当地从HATEOAS中受益。如果您可以分享您的经验/用例,那就太好了。
最佳答案
上面的@dreamer是一个很好的答案,但是HATEOAS在大多数基于REST的服务中不存在。这是对REST体系结构样式的约束,它允许客户端完全通过资源中包含的超媒体与服务进行交互。
如果您查看Twitter或Facebook REST API,您将找不到超媒体。查看Facebook friendlist资源。该资源中没有可用于转换资源状态的超文本链接-进行删除,更新等。相反,您需要阅读带外文档以了解删除该文件所需要执行的操作。资源。
在API中使用超媒体的优势之一是,您可以在资源本身中管理变更。例如,如果Facebook想向朋友列表添加其他功能怎么办?如果考虑到HATEOAS进行构建,则将更新资源以添加提供那些附加状态转换的超链接。
如果这听起来很难,那您是对的。但是,作为客户端应用程序的开发人员,一旦您了解了超媒体的呈现方式,便可以构建与API本身一起发展的应用程序。
那么如何使用HATEOAS构建API?有很多选择,但是我最喜欢Hypertext Application Language (HAL)。
更新:由于您要求的示例,这是使用HAL的demo的链接。
关于web-services - HATEOAS的好用例,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/22575399/