单个端点和序列号是否会破坏REST的无状态

时间:2018-06-01 22:25:01

标签: database rest http

我正在开发一个使用http创建REST服务器的项目。客户端仅使用两个字段发送请求:序列号,客户端UUID和指定要查找的数据库记录的数据库ID。客户端稍后将发出第二个(或多个)请求以获取与序列号相关联的请求的结果,并且如果客户端在两个/所有请求中匹配,则服务器仅执行此操作。整个项目在http://localhost:80/使用单个http端点(即没有子路径)。

这是否违反了rest的无状态属性,因为服务器需要无限期地保存多个响应,并通过单个端点/路径处理所有回复?

谢谢。

1 个答案:

答案 0 :(得分:0)

  

这是否违反了休息的无国籍属性

在REST的背景下,无状态通常是Fielding在论文第3章中描述的Client-Stateless-Server建筑风格的简写

  

客户端无状态服务器样式派生自客户端 - 服务器,其附加约束是服务器组件上不允许会话状态。从客户端到服务器的每个请求都必须包含理解请求所需的所有信息,并且不能利用服务器上任何存储的上下文。会话状态完全保留在客户端上。

Web是REST架构风格的规范参考应用程序。这是HTTP规范必须说的关于stateless

  

HTTP被定义为无状态协议,这意味着可以单独理解每个请求消息。

如果可能有助于考虑HTTP和FTP之间的区别。

对于HTTP,经过身份验证的GET请求是单个消息,带有Authorization标头。

For FTP,身份验证命令不是请求的一部分; USER,PASS,RETR是作为同一会话的一部分从客户端发送到服务器的所有不同消息。单独的RETR命令不包括计算访问是否应该被授权所需的身份验证上下文。

我不相信您的设计符合REST架构风格中的其他约束,但无状态在这里不一定是个问题。