如果TCP / IP是可靠的协议,它将代表我们重试请求,为什么我们需要HTTP GET,PUT或DELETE幂等?
TCP / IP不会重试请求,它会在必要时重新传输构成每个请求的原始数据包。
如果请求失败(在HTTP层),则由客户端来重试该请求,而不是网络堆栈。
特别是,如果客户端(无论出于何种原因)未能接收到指示RESTful操作是否成功的响应代码,则客户端必须能够重新发送相同的操作,而不必担心任何意外的副作用。
可能会发生这些故障-服务器正在处理操作时,中间防火墙可能会使连接超时。服务器不知道这已经发生了,一旦收到请求就必须继续执行。