代码之家  ›  专栏  ›  技术社区  ›  Surya

有人能简单地解释超文本是“应用程序状态的引擎”吗

  •  7
  • Surya  · 技术社区  · 17 年前

    这似乎是我最难理解的其他问题。我知道,在设计RESTAPI时,大部分工作应该放在为应用程序设计/描述超文本上。有没有指向这个原理的实际应用程序的指针?atom协议如何应用这一原则? 有人能简单地解释一下如何将其应用于一个假设的购物车RESTAPI吗。

    4 回复  |  直到 17 年前
        1
  •  12
  •   Darrel Miller    17 年前

    当试图解释超媒体时,我喜欢使用通过路标和地图在汽车中导航的例子。我知道它不能直接回答你的问题,但它可能会有帮助。

    传统的基于RPC的API更像一个映射。使用地图时,您往往会根据一组静态道路数据规划路线。地图的一个问题是,它们可能会过时,并且无法提供有关交通或其他动态因素的信息。

        2
  •  5
  •   Keith Gaughan    17 年前

    考虑一下自己导航一个普通的网站。当你访问时,你会阅读网页的内容,根据你读到的内容和你想做的事情,你会跟随网页上的各种链接。这就是“作为应用程序状态引擎的超文本”的核心。在本例中,应用程序状态是您头脑中的状态和您所在的页面。在此基础上,您将遍历更多链接,从而改变您头脑中的应用程序状态。

    记住,还有另外一个元素:另一方面,您不需要猜测那些URI:页面中应该有足够的上下文来推断URI(例如应用程序将具有的内容类型信息,以及URI模板等),或者应该存在要遵循的URI。除此之外,RESTful HTTP应用程序不应该关心URI的结构。

    为了扩展内容,HTML表单也展示了HATEOAS。使用GET的表单类似于使用URI模板。HATEOS不仅仅限于使用httpget遍历链接:使用POST(或者其他方法,如果浏览器恰好支持它)的表单可以被看作是描述要发送到服务器的表示。

        3
  •  0
  •   D.Shawley    17 年前

    看待这个概念的另一种方式是,状态由当前页面及其嵌入的链接表示。遍历链接会更改应用程序的状态,该状态由下一页表示。这有点难以解释。。。在任何时间点可用的链接根据已发生的操作定义可用的操作。这是“当前状态”的一个定义。

    诀窍是将可用操作表示为“作用”于资源的URI。检索与URI关联的表示将隐式执行操作并检索结果表示。URI嵌入到表示中,用户理解与特定URI关联的操作。各种HTTP方法有助于定义发生的“操作”,并指定何时不允许任何操作。这通常是人们在描述整个RESTful范式时所得到的。