Ci sono due modi:
- Rendi l'operazione idempotent , ovvero eseguirla due volte non ha effetti diversi dal farlo una sola volta.
- Permetti di scoprire lo stato di una richiesta ex post. Cioè, hai una query aggiuntiva per il risultato della passata richiesta dato il suo ID.
Per i protocolli tra le applicazioni il primo è preferito, ma dovrai farlo più tardi quando l'utente viene coinvolto.
Fondamentalmente quando non si ottiene la risposta, si riprova la richiesta con lo stesso ID e la stessa password monouso (o qualsiasi altro token di autenticazione diverso per ogni richiesta per impedire l'attacco di riproduzione) e assicurarsi che il server esegua nulla e ripete l'ultima risposta se ha già visto la richiesta. Questo gestirà il caso in cui la rete semplicemente lascia cadere la risposta.
Tuttavia, quando la rete ha interruzioni più lunghe solo nel momento inopportuno, l'utente alla fine rinuncerà e chiuderà l'app. Di quando lo riavviano in seguito, è necessario un modo per mostrare loro quali transazioni sono state ricevute sul server in modo che sappiano se è necessario immettere nuovamente la transazione o meno. Poiché hai perso lo stato chiudendo l'app, l'unica tua possibilità è quella di elencare la transazione e assicurarti che l'utente la veda.