在Representational State Transfer中,“State Transfer”是什么意思?
虽然有些解释(例如这里)对此有所说明,但我还是不太理解。例如,在文章中说:
表现将客户端应用程序置于一种状态中。
为什么?“State”(我理解的是类似于会话的东西)与资源的表现形式有什么关系?
在Representational State Transfer中,“State Transfer”是什么意思?
虽然有些解释(例如这里)对此有所说明,但我还是不太理解。例如,在文章中说:
表现将客户端应用程序置于一种状态中。
为什么?“State”(我理解的是类似于会话的东西)与资源的表现形式有什么关系?
考虑一个客户端应用程序是一种巨大的状态机。客户端的初始状态等于从服务器返回的第一个表示。返回表示中的链接提供了可能的“状态转换”。
需要注意的一件事是,有两种主要类型的链接,被动链接和主动链接。像<img>
和<link rel="stylesheet">
这样的被动链接实际上不会导致状态转换,它们只是增强当前状态。而<form>
和<a>
等链接则是主动链接,它们引起状态转换。在跟随其中一个链接后,新的客户端状态等于返回的表示,也就是状态转移。
如果您习惯构建传统的桌面客户端应用程序,您会发现这是一种完全不同的架构。这不是您可能一夜之间能够理解的。最初,这种方法可能看起来非常限制,但是当您考虑到客户端应用程序可以是许多同时执行的状态机的托管程序时,您将开始意识到,您可以做的几乎与使用远程对象架构相同,并仍然保持Web浏览器的松散耦合。