Mik*_*378 7 javascript rest http angularjs cordova
我拥有一个混合应用程序,其主要语言是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
});
};
Run Code Online (Sandbox Code Playgroud)
让我们假设触发该save
函数,并且在POST
请求之后,移动设备立即失去互联网连接,导致客户端出现错误,因此涉及错误回调。
在这种“例外”情况下,该元素将在服务器的数据库上很好地创建,但不会触发 javascript 成功回调,因为互联网连接丢失会导致“错误”。
此案如何处理?
如何避免用户重新提交表单(他会不知道服务器端第一次创建元素)?
您可以创建一个交易模型:
客户端为此请求创建一个唯一的事务 ID 并附加到 Rest 调用
服务器收到请求,检查事务日志中是否有具有相同 id 的先前调用。
如果是新事务,服务器会将此事务 ID 存储在日志中,状态为“待处理”。然后服务器处理该请求。服务器将事务日志状态更新为“已处理”。然后服务器将响应发送给客户端并将响应存储在事务日志中
如果是旧事务,服务器重新向客户端发送响应
客户端收到响应,客户端向服务器发送交易完成信号。
服务器将事务日志删除/更新为“已完成”
第5步失败,客户端可以用相同的transaction id重新发送请求,没有重复记录的风险
归档时间: |
|
查看次数: |
2004 次 |
最近记录: |