`表述性状态转移`中的`状态转移`有几个常见误解

5

所以我对REPRESENTATIONAL STATE TRANSFER中的STATE TRANSFER有一些误解。

  • state transfer是指传输服务器上当前存在的资源的表示形式吗?

例如:考虑客户端通过访问/XCompanyPrice URI请求某个X公司的当前股价,在服务器的当前时刻,公司x的股价为2美元,这被称为资源的当前状态,而该资源的状态可能会发生变化,这就是在缩写REPRESENTATIONAL STATE TRANSFERSTATE的意思吗?

还是

  • 有些人说,缩写REPRESENTATIONAL STATE TRANSFER中的STATE TRANSFER意味着,当用户在网页上点击链接时,应用程序的状态会因为信息的改变从一个页面转换到另一个页面,例如:/about/contact页面。

还是

  • 有些人说,当客户端访问一个图片(例如:/image)时,假设该图片的格式是DB中的BLOB,但是REST将该图片的表示形式以可理解的格式传输给客户端,这就是缩写REPRESENTATIONAL STATE TRANSFER中的STATE TRANSFER

REPRESENTATIONAL STATE TRANSFER方面哪一个正确呢?

因此,REPRESENTATIONAL STATE TRANSFER中的state transfer一词是指数据使应用程序的状态改变还是传输服务器上当前存在的资源的表示形式?

请帮忙解决这个问题。

1个回答

3
"REST" 的意义唯一的权威资料是罗伊·菲尔丁的论文,其中引入并定义了此术语。
最简洁的答案可能在5.2.1.2章节中:
REST 组件通过使用表示来对资源执行操作,以捕获该资源的当前或预期状态,并在组件之间传输该表示。表示是一系列字节,加上表示元数据来描述那些字节...根据消息控制数据,给定的表示可以指示所请求资源的当前状态、所请求资源的期望状态,或某其他资源的值,例如客户端查询表单中输入数据的表示,或响应的某些错误条件的表示。
换句话说,一个组件(如客户端或服务器)通过将其状态的表示传输到另一个组件来操作资源。"

我并不完全理解你提到的各种定义和例子,但我认为最后一个基本上是正确的。第二个似乎不正确,因为这里的“状态”明显指的是特定的资源,而不是模糊的“应用程序状态”。


你的意思是当客户端通过/image访问图像,并且该图像在数据库中的格式为BLOB时,REST将以可理解的格式向客户端传输该图像的表示形式,这就是所谓的表现层状态转移。 - Ravan
你能提供一个例子吗? - Ravan
1
@Ravan:没错,就是那个。例如标准请求和响应。服务器通过传输资源的表示来响应GET请求;客户端通过传输它想要创建的资源的表示来执行PUT操作;等等。 - Kevin Christopher Henry

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接