Decidendo sull'approccio idempotenziale del metodo

0

Stiamo creando un servizio web con un metodo di creazione idempotente e stiamo cercando approcci su come implementare l'idempotenza.

Gli oggetti creati hanno proprietà identificative univoche, chiamate Id , che è un tipo GUID e assegnato dal consumatore.

Abbiamo considerato questi approcci:

1) Controlla se esiste un oggetto con lo stesso Id

2) Includere anche una proprietà Version e verificare se esiste un oggetto con lo stesso Id e Version

3) Verifica se un oggetto con lo stesso Id exis ma ottieni l'oggetto dal negozio, crea un hash e confrontalo con l'hash dell'oggetto in arrivo

Cosa consiglieresti?

    
posta dstr 06.04.2016 - 10:51
fonte

1 risposta

1

Devi generare un hash univoco per confrontare ogni oggetto. Ovviamente potresti semplicemente confrontare ogni campo nel tuo backing store o in ogni campo importante.

Potresti dover pensare di più a cosa succede nella creazione però - immagina di provare a inviare i dettagli del nuovo utente a SO per l'userid gbjbaanb, se fallisce a causa di uno già esistente, non vorrei che i dettagli fossero rimandato al client - o potresti 'creare' il mio utente e vedere tutti i miei bit, o sovrascrivere, quindi potresti fornire una nuova password e hackerare il mio utente. Se hai semplicemente restituito "successo, creato dall'utente", questo non indica ad un utente che crea un nuovo account che non ha effettivamente creato un nuovo utente!

Questi 2 scenari si escludono a vicenda: non è possibile avere entrambi che funzionano come si vuole, bisogna dare.

    
risposta data 06.04.2016 - 23:01
fonte

Leggi altre domande sui tag