我想实现一个REST API(对于本例中的视频游戏),并希望使其尽可能无状态(身份验证将是唯一的状态)。
我仍然对无状态的真正含义感到很困惑:例如,连续两次调用
api.myhost.com/users/{playerid}
可以及时提供2个不同的答案,例如:
{name: "toto", life: 98, score: 52}
和
{name: "toto", life: 12, score: 378}
问题:
- 访问同一资源时提供不同的答案是否会被视为破坏 REST API 的无状态条件?
- 在这种情况下改变规则(时间对资源的影响)是否被视为可接受的做法?
- 如果不是,由于我想要表示的现实具有状态(随时间变化),我该如何将其转换为无状态模型?
最佳答案
您所描述的 - API 随着时间的推移返回不同的值 - 完全没问题。这不是“无国籍”所指的。
“无状态”意味着每个 REST 调用应该是独立的:服务器不存储有关客户端的任何(或很多)信息。客户端的状态(例如,他们在搜索结果的哪个页面上,或者他们是否登录)不会存储在服务器上;客户端每次发出新请求时都必须重新发送。
关于rest - REST 资源是否允许随时间变化?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36179789/