我正在阅读一本关于Rest架构的书,并且遇到了这个部分
特别是,应用程序必须分为客户端 - 服务器模型,服务器必须保持完全无状态。服务器上不能存储客户端上下文,也应该唯一且统一地识别资源。
1。服务器保持完全无状态意味着什么?
2。服务器上是否可以存储客户端上下文?客户背景是什么?
任何帮助打破这一点的人都会受到赞赏。
答案 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.
您刚刚购买了book或wrist watch吗?服务器不知道您是否点击了后退按钮。