Nel confrontare la struttura REST [api] con un modello OO, vedo queste somiglianze:
Entrambi:
- 
Sono orientati ai dati
- REST = Risorse
 - OO = Oggetti
 
 - 
Funzionamento surround intorno ai dati
- REST = surround VERBS (Get, Post, ...) attorno alle risorse
 - OO = promuove l'operazione intorno agli oggetti mediante l'incapsulamento
 
 
Tuttavia, le buone pratiche OO non si trovano sempre nelle apis REST quando si tenta di applicare il modello di facciata, ad esempio: in REST, non hai 1 controller per gestire tutte le richieste E non nascondi la complessità dell'oggetto interno.
 
Al contrario, REST promuove la pubblicazione di risorse di tutte le relazioni con una risorsa e altre su almeno due forme:
-  
tramite le relazioni di gerarchia delle risorse (un contatto di id 43 è composto da un indirizzo 453):
/api/contacts/43/addresses/453 -  
tramite link in una risposta JSON di REST:
 
>> GET /api/contacts/43 << HTTP Response { id: 43, ... addresses: [{ id: 453, ... }], links: [{ favoriteAddress: { id: 453 } }] }
 
TornandoaOO,loschemadiprogettazionedellafacciatarispettaunaLowCouplingtraunoggettoAeilsuo'oggettoBclient'eHighCohesionperquestooggettoAelasuacomposizionedioggettiinterna(objectC,objectD).Conl'interfacciaobjectA,questoconsenteaunosviluppatoredilimitarel'impattosuoggettoBdelleobjectAmodificheinterne(inobjectCeoggettoD),purchél'oggettoAapi(operazioni)siaancorarispettato.
InREST,idati(risorse),lerelazioni(collegamenti)eilcomportamento(verbi)sonoesplosiinelementidiversiedisponibiliperilweb.
GiocandoconREST,hosempreunimpattosullemodifichealcodicetrailmioclienteilmioserver:perchéhoHighCouplingtralemierichiestediBackbone.jseLowCohesiontralerisorse.
NonhomaicapitocomeconsentirealmioBackbone.jsjavascriptapplicationdigestire" risorse e funzionalità REST "  discovery  promosse dai link REST. Capisco che il WWW è destinato ad essere servito da più server, e che gli elementi OO dovevano essere esplosi per essere serviti da molti host, ma per uno scenario semplice come "salvare" una pagina che mostra un contatto con i suoi indirizzi, Finisco con: 
GET /api/contacts/43?embed=(addresses) [save button pressed] PUT /api/contacts/43 PUT /api/contacts/43/addresses/453
che mi portano a spostare la responsabilità transazionale atomica dell'azione di salvataggio nelle applicazioni del browser (poiché due risorse possono essere indirizzate separatamente).
Tenendo questo a mente, se non riesco a semplificare il mio sviluppo (modelli di facciate non applicabili), e se porto più complessità al mio cliente (gestendo il salvataggio atomico transazionale), qual è il vantaggio di essere RESTful?