Quando si progetta l'idempotenza degli endpoint REST è uno strumento cruciale. Diciamo che abbiamo un endpoint HTTP che accetta PUT che vorremmo essere idempotenti.
Nel caso in cui un client effettui la stessa richiesta più volte, il server dovrebbe sempre restituire lo stesso o è accettabile restituire un errore la seconda volta?
Se la risposta è sì, restapitutorial.com ha torto nello scrivere quanto segue?
"Da un punto di vista di servizio RESTful, affinché un'operazione (o una chiamata di servizio) sia idempotente, i clienti possono ripetere quella stessa chiamata ripetutamente mentre producono lo stesso risultato. In altre parole, fare richieste multiple identiche ha lo stesso effetto di fare una singola richiesta Si noti che mentre le operazioni idempotent producono lo stesso risultato sul server (senza effetti collaterali), la risposta stessa potrebbe non essere la stessa (ad esempio lo stato di una risorsa può cambiare tra le richieste "
Se la risposta è sì, un database di documenti implementa una concorrenza ottimistica usando get + put non idempotente in quanto la seconda chiamata darebbe luogo a un conflitto?
Se la risposta è sì, esiste un termine per i servizi che forniscono la minore forma di garanzia che fare la stessa richiesta più di una volta ha lo stesso effetto sullo stato del server di farlo esattamente una volta?