休息中的无国籍状态

时间:2016-07-03 18:02:41

标签: rest restful-architecture

我正在阅读一本关于Rest架构的书,并且遇到了这个部分

  

特别是,应用程序必须分为客户端 - 服务器模型,服务器必须保持完全无状态。服务器上不能存储客户端上下文,也应该唯一且统一地识别资源。

1。服务器保持完全无状态意味着什么?

2。服务器上是否可以存储客户端上下文?客户背景是什么?

任何帮助打破这一点的人都会受到赞赏。

1 个答案:

答案 0 :(得分:4)

  

服务器保持完全无状态意味着什么?

这意味着发送到服务器的每条消息都被认为是完整的;服务器不应该“记住”来自客户端的先前消息。

考虑购买一本书。

Client: What's the price of [Rest in Practice: Hypermedia and Systems Archicture]
Server: The price of [Rest in Practice: Hypermedia and Systems Archicture] is 36.16 USD.
Client: Buy it.

要让服务器知道“它”是什么意思,它必须记住以前关于图书价格的对话,知道客户正在谈论哪本书。

无国籍意味着客户从不用代词进行谈话

无状态版本看起来像

Client: Buy [Rest in Practice: Hypermedia and Systems Archicture].

服务器需要知道的有关客户端当前状态的所有内容都包含在消息中。也许这个客户首先询问价格,也许没有。没关系,因为所有的信息都在这里,在这条消息中。

考虑这个序列:

Client: What's the price of [Rest in Practice: Hypermedia and Systems Archicture]
Server: The price of [Rest in Practice: Hypermedia and Systems Archicture] is 36.16 USD.
Client: What's the price of [Royal Oak Tourbillon]
Server: The price of [Royal Oak Tourbillon] is 122000.00 USD.
Client: Buy it.

您刚刚购买了bookwrist watch吗?服务器不知道您是否点击了后退按钮。