Sto cercando di capire meglio i pro e i contro di REST. Penso di avere una buona presa sui fattori chiave, in particolare la creazione di endpoint / URI che rappresentano meglio le risorse in gioco e l'utilizzo di hypermedia per eliminare l'accoppiamento di client e gli URI all'applicazione
La mia comprensione è che se i client interagiscono correttamente con l'applicazione REST, accedono sempre all'endpoint di base e utilizzano l'hypermedia restituito per indirizzarli alle risorse con cui vogliono interagire. È tuttavia necessaria una certa conoscenza di ciò che verrà restituito, dal momento che le specifiche dell'ipermedia utilizzato o ciò che le relazioni restituite significano. Un'applicazione chiamante deve sapere, ad esempio, che era necessario andare all'URI "create" e fare un PUT lì per aggiungere una risorsa.
Ciò sembra abbastanza ragionevole, tuttavia, poiché l'URI restituito con la relazione "create" può cambiare a discrezione del server e il client sarà comunque in grado di aggiungere la risorsa. Tuttavia, cosa succede quando tale risorsa richiede una notevole quantità di metadati? Come fa il cliente a sapere quali dati sono richiesti e come fornirli? Tutto questo deve essere fornito al cliente separatamente? Sembra che debba essere necessario, il cliente non può conoscere magicamente quell'informazione.
Se questo è il caso, tuttavia, sembra che la cosa principale che riceviamo da REST sia l'indipendenza dall'URI. Qualcosa che, sebbene sia certamente utile per alcune applicazioni, sembra che probabilmente non valga il costo aggiuntivo richiesto per entrambe le applicazioni nella maggior parte dei contesti. Mi sto perdendo qualcosa qui? Si prevede che il livello di documentazione e condivisione delle conoscenze sarà condiviso con il cliente prima che possano chiamare il servizio?
In parte mi viene in mente che potrei avere solo bisogno di vedere un servizio che so essere veramente RESTful e imparare da come è architettato. Ci sono grandi esempi pubblici di un servizio RESTful che potrei esaminare per aiutare a capire meglio questo?