代表性国家转移(REST)中的“国家转移”是指什么?

时间:2011-01-05 11:42:48

标签: http rest terminology

Representational State Transfer中的 State Transfer 是指什么?

找到了一些关于此的解释(例如here),但我仍然不明白。例如在文章中说

  

表示将客户端应用程序置于某个状态。

为什么呢?状态(我理解,像会话之类的东西)与资源的表示有什么关系?

3 个答案:

答案 0 :(得分:18)

  

为什么呢?状态(我理解,像会话之类的东西)与资源的表示有什么关系?

对象具有属性(或状态)和行为(或方法)。

如果我想将对象从桌面移动到服务器,我必须执行以下操作:

  1. 创建对象状态的表示。

  2. 将该表示从桌面传输到服务器。

  3. 我不转移的方法。我在两台机器上安装了相同的类定义。

    因此,REST是关于创建对象当前状态的表示,以便可以将其转移到可以从中重构对象的另一个服务器。

    我们只发送对象的状态 - 属性。我们必须创建该状态的外部序列化表示。

答案 1 :(得分:11)

将客户端应用程序视为一种巨型状态机。客户端的初始状态等于从服务器返回的第一个表示。返回表示中的链接提供可能的“状态转换”。

需要注意的是,有两种主要类型的链接,被动和主动。像<img><link rel="stylesheet">这样的被动链接实际上并不会导致状态转换,它们只会增加当前状态。然而,<form><a>等链接是活动链接,导致状态转换。在遵循其中一个链接之后,新的客户端状态等于返回的表示,即状态转移

如果您习惯于构建传统的桌面客户端应用程序,您会发现这是一个完全不同的架构。不是一个你可能一夜之间徘徊的人。最初这种方法可能看起来非常有限但是当您认为客户端应用程序可以成为许多同时执行状态机的主机时,您将开始意识到您可以执行任何可以使用远程对象体系结构并且仍然保持松散的状态Web浏览器的耦合。

答案 2 :(得分:2)

Web由资源组成。资源是任何感兴趣的项目。例如,波音飞机公司可以定义747资源。客户端可以使用thisURL访问该资源:返回资源的http://www.boeing.com/aircraft/747A表示(例如,Boeing747.html)。该表示将客户端应用程序置于某个状态。客户端遍历Boing747.html中的超链接的结果是访问另一个资源。新表示将客户端应用程序置于另一个状态。因此,客户端应用程序使用每个资源表示来改变(转移)状态 - &gt;具象国家转移!