为什么atmoicinteger(incrementAndGet)在每个新的静态(无状态)服务调用中返回新值

时间:2018-08-14 09:39:49

标签: rest

Restful是无状态的,因此它如何在随后的新服务调用中保持其先前的值。我认为无状态意味着服务器不会维护任何状态 即使标题中有cache-control = nocache (我实现了本教程:https://spring.io/guides/gs/rest-service/

1 个答案:

答案 0 :(得分:0)

  

Restful是无状态的,因此在后续的新服务调用中如何保持其先前的值。

在REST的上下文中,无状态意味着精确的东西-而不是您的想法。

与有关REST体系结构样式的大多数问题一样,Roy Fielding的论文是值得一看的地方。他在chapter 5中写道

  

从客户端到服务器的每个请求必须包含理解该请求所需的所有信息,并且不能利用服务器上任何已存储的上下文。因此,会话状态完全保留在客户端上。

我建议将HTTP与FTP进行比较,以了解无状态请求和有状态请求之间的区别。

  

我认为无状态意味着服务器不会维护任何状态

“资源”具有状态-请参阅Resource and Resource IdentifiersRepresentations上的Fielding。

一个不同的想法是将Web服务器分为两个部分,这些部分可以独立扩展-无状态计算和稳定的存储设备(即数据库)。 REST并没有强制要求这种分离-休息的一部分是,服务器的实现细节不受约束,无需支持统一接口。