为什么这被视为无国籍?

时间:2018-04-04 17:03:25

标签: stateless stateful

今天和同事一起讨论新服务的架构,并且有一个概念我遇到了一些问题。

真的有两个问题,第一个是https://ruben.verborgh.org/blog/2012/08/24/rest-wheres-my-state/中使用的图像示例是否仍然被视为有状态,如果我们引入两个更改:

GET /nextImage?userId // Does NOT update the value of current image

// Updating current image requires setting it explicitly:
PUT /currentImage?value=X // X being the image number

如果答案是“否”,那对我来说可能会更有意义,但让我们继续。

我们正在讨论的服务是一个单词预测服务,它具有“用户字典单词”的附加功能 - 它不仅可以预测服务中静态字典中的单词,还可以预测用户提供的单词。

我建议将服务设为无状态:

GET /predictions?userId=X&text=Y&words=Z

text是用户编写的文本,words是“用户词典单词”列表,响应是符合text参数的单词列表(包括那些来自words)。

我的同事的建议:

不是在每个请求中发送words,而是将它们放在数据库中(由用户ID标识并通过单独的RESTful API进行操作),然后发送请求:

GET /predictions?userId=X&text=Y

据说这也是无状态的,但我不太清楚为什么 - 数据库中的这个单词列表是不是等同于存储currentImage的值并因此有状态?

0 个答案:

没有答案