说我有一个用户,他们正在尝试更新其个人资料数据。请求已发送,但互联网速度太慢或已断开连接,请求一直持续下去。
在Retrofit和OkHttp中,取消请求很容易。但是当它是POST / PATCH / PUT / DELETE时,请求结果将被忽略,但是服务器仍将完全处理请求(更新数据)。
这意味着如果用户取消更新并且更新了数据,则成功更新的响应将被忽略。
是否可以中止请求并终止为处理请求而执行的后端代码(在我的情况下为PHP)?
答案 0 :(得分:0)
这是一个常见的问题,它也可能以其他方式发生,例如,您提交了一些东西,数据被服务器处理,结果没有返回到设备(数据包在设备上丢失了)。回来)。
在这些情况下,您需要更好的UX设计来处理这些问题,例如,不允许取消API,或者如果这样做,则调用具有取消功能的另一个API,并让服务器知道用户已撤消其决定,并且数据必须还原。
答案 1 :(得分:0)
首先让我们了解一下由于连接速度缓慢而需要取消请求的要求,而且您已经有一段时间没有看到服务器的响应了。
就您而言,它也是个人资料更新和最终目标。即使你拍 请求,但没有收到回复,您会立即获得回复 加载个人资料,甚至在尝试更新后,您将覆盖 具有新信息的已更新个人资料。
您无需增加检查请求的额外负担 客户端在服务器端代码上发送的取消事件将于明天开始 它可能需要服务于众多受众。
希望这可以澄清,因为进行数据库滚动的安全解决方案 背,有人去支付解决方案使用的影子更新 不适合这种情况。
在注册的情况下:即使您发送的请求已得到处理,在下次尝试发送时也会收到已注册的错误。因此,只需登录即可。上载内容,您确定已经存在或让用户再次更新内容也没有关系,他有权更新数据。
与其他方案实现相同,您必须检查是否已经存在。
在取消请求的情况下:人们不会遵循此要求,因为这会产生额外费用,并且需要加倍努力。
现在希望这可以澄清您要查找的内容。