Ho letto parecchi articoli sulla differenza tra POST e PUT e in quando i due dovrebbero essere usati. Ma ci sono ancora poche cose che mi confondono (si spera che le domande abbiano un senso):
1) Dovremmo usare PUT per creare risorse quando vogliamo che i client specifichino l'URI delle risorse appena create e dovremmo usare POST per creare risorse quando lasciamo che il servizio generi l'URI delle risorse appena create .
a) È solo per convenzione che POST create request non contiene un URI della risorsa appena creata o La richiesta di creazione POST in realtà non può contenere l'URI della risorsa appena creata ?
b) PUT ha una semantica idempotente e quindi può essere tranquillamente utilizzato per aggiornamenti assoluti (cioè inviamo l'intero stato della risorsa al server), ma non anche per gli aggiornamenti relativi (cioè inviamo solo modifiche allo stato della risorsa ), poiché ciò violerebbe la sua semantica.
Tuttavia, suppongo che sia ancora possibile per PUT inviare aggiornamenti relativi al server, è solo che in tal caso l' aggiornamento PUT non sarà idempotente?
2) Ho letto da qualche parte che dovremmo " utilizzare POST per aggiungere una risorsa a una raccolta identificata da un URI generato dal servizio ".
a) Che cosa significa esattamente? Che se gli URI per le risorse fossero generati da un server (quindi le risorse sono state create tramite POST), allora TUTTE le risorse successive dovrebbero anche essere create tramite POST? Quindi, in tale situazione nessuna risorsa dovrebbe essere creata tramite PUT?
b) Se la mia ipotesi in a) è corretta, potresti elaborare il motivo per cui non dovremmo creare alcune risorse tramite POST e alcune tramite PUT (supponendo che il server contenga già una raccolta di risorse create tramite POST)?