中止更新数据的请求

问题描述 投票:1回答:2

假设我有一个用户,他们正在尝试更新他们的个人资料数据。请求已发送,但互联网速度太慢或断开连接,请求将永远存在。

在Retrofit和OkHttp中,取消请求很容易。但是当它是POST / PATCH / PUT / DELETE时,请求结果被忽略,但服务器仍然完全处理请求(更新数据)。

这意味着如果用户取消更新并更新数据,则忽略成功更新的响应。

有没有办法中止请求并终止正在执行处理请求的后端代码(在我的情况下是PHP)?

android retrofit okhttp3
2个回答
0
投票

这是一个常见的问题,它也可能以其他方式发生,例如,您提交的内容,数据由服务器处理,结果不会返回到设备(数据包在返回途中丢失) 。

在这些情况下,您需要更好的UX设计来处理这些问题,例如,不允许取消API,或者如果您这样做,请通过取消调用另一个API,让服务器知道用户已撤消其决定并且数据已包含要恢复。


0
投票

让我们首先了解您是否能够取消因为连接速度慢而导致的请求,并且您在一段时间内没有看到服务器的响应。

在您的情况下,它也是个人资料更新和最终目标。即使您拍摄了请求并且没有收到回复,您也会在重新加载配置文件时获得响应,甚至在重试更新后,您将使用新信息覆盖已更新的配置文件。

您不需要增加客户端在服务器端代码上发送的检查请求取消事件的额外负担,因为明天它可能需要为大量受众提供服务。

希望这可以澄清,因为执行数据库回滚的安全解决方案,有些人去支付解决方案使用的影子更新不适合这种情况。

如果注册:即使您发送了请求已被处理,在下次尝试发送时您已经注册了错误。所以就去登录吧。同样适用于上传内容,您识别已存在或让用户再次更新它们无论如何都不会受到伤害,他有权更新数据。

与其他场景实现相同,您必须检查是否已存在。

如果取消请求:人们不遵循这一点,因为它需要额外的成本,需要双倍的努力。

希望现在这可以澄清你在寻找什么。

© www.soinside.com 2019 - 2024. All rights reserved.