gpt4 book ai didi

javascript - 处理 POST api 和互联网连接丢失的良好做法

转载 作者:可可西里 更新时间:2023-11-01 15:29:33 25 4
gpt4 key购买 nike

我拥有一个混合应用程序,其主要语言是 Javascript (AngularJs) 所以。
基本上,我有一个旨在通过我的 REST api(在不同的服务器上)创建对象的表单。

我的 save 函数在概念上是这样的:

$scope.save = function () {
var promise = CRUDService.post($scope.myElementToPost);
promise.then(function (response) {
//when 20X status
}, function () {
//when 40X - 50X status
});
};

假设触发了save 函数,在POST 请求之后,手机立即失去了互联网连接,导致客户端出现错误,因此涉及错误回调

在这种“异常(exception)”情况下,元素会在服务器的数据库中很好地创建,但不会触发 javascript 成功回调,因为互联网连接丢失会导致“错误”。

如何处理这种情况?
如何避免用户重新提交表单(他会不知道服务器端元素的第一次创建)?

最佳答案

您可以创建一个事务模型:

  1. 客户端为此请求创建一个唯一的事务 ID 并附加到 Rest 调用

  2. 服务器收到请求,检查事务日志是否有相同id的先前调用。

  3. 如果是新交易,服务器会将此交易 ID 存储在状态为“未决”的日志中。服务器然后处理该请求。服务器将事务日志状态更新为“已处理”。服务器然后将响应发送给客户端并将响应存储在事务日志中

  4. 如果是旧事务,服务器重新发送响应给客户端

  5. 客户端收到响应,客户端向服务器发送交易完成信号。

  6. 服务器将事务日志删除/更新为“已完成”

第5步失败,客户端可以用相同的交易id重新发送请求,没有重复记录的风险

关于javascript - 处理 POST api 和互联网连接丢失的良好做法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28573778/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com