Web services 使方法幂等

Web services 使方法幂等,web-services,idempotent,Web Services,Idempotent,假设我们在AccountManager类中有一个方法deposit(整数金额)。此方法将修改accountTotal,因此不是幂等的。 如何使此方法成为幂等的?根据用户输入更改某些内容的方法(就像您的方法一样)不能成为幂等的。这意味着,如果您调用存款(10)一百次,只会产生与调用一次相同的效果,这没有任何意义。通过传递您计划更改的状态的初始状态。您可以为每个修改指定一个唯一的id,并传递要进行更改的状态的id。由于每次更改后id都会增加(或以某种方式更改),因此后续对旧id的更改请求将不会起任何

假设我们在AccountManager类中有一个方法deposit(整数金额)。此方法将修改accountTotal,因此不是幂等的。
如何使此方法成为幂等的?

根据用户输入更改某些内容的方法(就像您的方法一样)不能成为幂等的。这意味着,如果您调用存款(10)一百次,只会产生与调用一次相同的效果,这没有任何意义。

通过传递您计划更改的状态的初始状态。您可以为每个修改指定一个唯一的id,并传递要进行更改的状态的id。由于每次更改后id都会增加(或以某种方式更改),因此后续对旧id的更改请求将不会起任何作用(因为对象不会处于具有该id的状态)。可以将此视为CMS中的全面“签入”操作。未更改的文件将不需要签入。在对确实发生更改的文件进行初始签入更改后,后续的全面签入将不会起任何作用。

您不理解我的问题。通过使其幂等,可以防止在服务器端执行错误的请求。我考虑的一个解决方案是将transactionId作为额外参数传递,并在服务器上检查同一事务是否未提交两次。幂等性正是我描述的意思。此外,我不认为添加和/或更改参数将是我寻找想法的一个选择。这个问题没有具体的限制。那么我认为使用一个唯一的事务id,就像你提到的,可能是最好和最简单的方法。你为什么要这样做?