当我们拥有TCP / IP时,为什么HTTP操作需要幂等?

Gil*_*ili 3 rest networking tcp http

如果TCP / IP是可靠的协议,它将代表我们重试请求,为什么我们需要HTTP GET,PUT或DELETE幂等?

Aln*_*tak 5

TCP / IP不会重试请求,它会在必要时重新传输构成每个请求的原始数据包

如果请求失败(在HTTP层),则由客户端来重试该请求,而不是网络堆栈。

特别是,如果客户端(无论出于何种原因)未能接收到指示RESTful操作是否成功的响应代码,则客户端必须能够重新发送相同的操作,而不必担心任何意外的副作用。

可能会发生这些故障-服务器正在处理操作时,中间防火墙可能会使连接超时。服务器不知道这已经发生了,一旦收到请求就必须继续执行。