我看过各种REST API的文档,但是我对REST API的理解不是很清楚,有没有人能帮我通俗地理解一下?它和API有状态有什么区别?为什么今天我们开发的API都是REST API?
guicsvcw1#
术语无状态/有状态是一个常用术语,对Rest API和其他任何东西都有相同的含义。1.无状态意味着当你调用某个实体时,其响应(输出)总是只依赖于你的输入。也就是说,对于任何数量的调用,只要输入相同,你总是会得到相同的响应。例如:“2 + 2等于什么?”的请求将总是得到答案4,不管你问多少次,也不管在你的查询请求之间是否有其他查询。1.有状态意味着输出将取决于您的输入和某些内部状态。例如:“请将2添加到您持有的当前号码。新号码是什么?”(假设内部状态(当前号码)是0)。在第一次查询后,您将得到答案2,但在第二次查询后,您将得到答案4,依此类推。
wnavrhmk2#
从客户端到服务器的每个请求都必须包含理解请求所需的所有信息,并且不能利用服务器上存储的任何上下文。--Fielding,2000请注意,这是对 * semantics * 的约束:理解请求含义所需的所有信息都在请求本身中。反例:FTP中的LIST命令,其中pathname "的空参数暗示用户的当前工作或默认目录"是 * 非 * 无状态的--当前工作目录是服务器需要从先前请求中记住的会话状态的数据。
2条答案
按热度按时间guicsvcw1#
术语无状态/有状态是一个常用术语,对Rest API和其他任何东西都有相同的含义。
1.无状态意味着当你调用某个实体时,其响应(输出)总是只依赖于你的输入。也就是说,对于任何数量的调用,只要输入相同,你总是会得到相同的响应。例如:“2 + 2等于什么?”的请求将总是得到答案4,不管你问多少次,也不管在你的查询请求之间是否有其他查询。
1.有状态意味着输出将取决于您的输入和某些内部状态。例如:“请将2添加到您持有的当前号码。新号码是什么?”(假设内部状态(当前号码)是0)。在第一次查询后,您将得到答案2,但在第二次查询后,您将得到答案4,依此类推。
wnavrhmk2#
从客户端到服务器的每个请求都必须包含理解请求所需的所有信息,并且不能利用服务器上存储的任何上下文。--Fielding,2000
请注意,这是对 * semantics * 的约束:理解请求含义所需的所有信息都在请求本身中。
反例:FTP中的LIST命令,其中pathname "的空参数暗示用户的当前工作或默认目录"是 * 非 * 无状态的--当前工作目录是服务器需要从先前请求中记住的会话状态的数据。