Stiamo implementando un webservice RESTful che consentirà alle applicazioni client di inviare documenti POST e memorizzerà il documento restituendo un identificatore univoco nella risposta. I client saranno per lo più applicazioni Spring MVC, ma non è necessario.
Le due applicazioni client su cui stiamo lavorando hanno vari JSP che contengono moduli HTML che conterranno elementi di file e altri attributi. Quindi un utente invierà un modulo tramite POST a un controller Spring nell'applicazione client. Il controllore leggerà i byte dal file e poi li POST al servizio RESTful, riceverà l'identificativo univoco indietro e memorizzerà l'identificatore univoco insieme alle altre informazioni dal modulo nel database.
Dato che ogni client può avere più JSP con attributi ampiamente variabili nei moduli, non vediamo un modo per inviare solo POST direttamente al servizio web RESTful.
Esiste un modo pulito per evitare il doppio POST?
Ho potuto vedere la possibilità di avere una finestra pop-up riutilizzabile che si occupa di inviare il documento al servizio web RESTful e quindi di mantenere l'ID del documento univoco nella sessione o in un campo nascosto nel modulo padre. Posso vedere due aspetti negativi: 1) l'utente potrebbe non gradire il passaggio in più al pop-up e 2) il documento potrebbe essere orfano se l'utente non invia la pagina padre.
MODIFICA / CHIARIMENTO: il problema non è che un POST venga inviato due volte alla stessa risorsa, ma piuttosto che sia necessario avere un POST da JSP a Controller all'interno dell'applicazione client e quindi un secondo POST degli stessi dati dal client applicazione alla risorsa REST.