Esistono risorse di intenti in REST?

3

Nelle indagini su REST, ho visto molto su CRUD vs REST (vedi Differenza tra REST e CRUD ) e come REST non è CRUD.

Mi sono imbattuto in un paio di articoli che parlano dell'esposizione di risorse intent e sto cercando di capire cosa si intende per quello.

Il meglio che posso capire è che questo significa che l'API REST si manifesta come un'API più granulosa che non implica la manipolazione diretta degli oggetti del dominio, come farebbe un API CRUD.

Ad esempio, si presuppone un'API REST in cima a un'infrastruttura bancaria, che consente al cliente di trasferire denaro tra conti. Sotto il cofano, l'infrastruttura bancaria non ha alcun concetto di trasferimento, comprende solo le transazioni e un trasferimento è realmente un debito su un conto e un credito su un altro.

Quindi la restante API potrebbe esporre qualcosa come / mybank // transfer a cui potresti postare un documento contenente i dettagli di trasferimento necessari (dall'account, all'account, all'importo ecc.). L'infrastruttura bancaria creerebbe quindi le necessarie transazioni .

Questo è ciò che si intende per intent ? Dal punto di vista del modello di dati, gli oggetti trasferimento non esistono, ma l'api REST li espone come una rappresentazione di ciò che il cliente vuole fare?

    
posta user783836 27.10.2016 - 18:03
fonte

2 risposte

4

In una tipica infrastruttura n-layer, vedrai accordi come questo

database <---SQL---> DAL <---CRUD---> Service Layer <---BUSINESS OPS---> REST API

È la comunicazione BUSINESS OPS che questi articoli si associano alla parola "intento". Ciò significa che, anziché richiedere al client di conoscere tutte le chiamate CRUD necessarie per eseguire un'operazione commerciale, il client richiede l'operazione di business stessa e il livello di servizio elabora ciò che è necessario per le chiamate CRUD e gli ambiti di transazione a realizzalo.

    
risposta data 27.10.2016 - 18:52
fonte
1

Is this what is meant by intent? From a data model perspective, transfer objects don't exist, but the REST api exposes them as a representation of what the customer wants to do?

Questo è un buon riassunto di ciò che intendevano gli autori. Poiché l'API agisce come un'astrazione di fronte all'applicazione reale, puoi fornire all'API risorsa un singolo messaggio (rappresentazione) che descrive una complessa combinazione di azioni nel server e l'implementazione di quella risorsa può negoziare con il / i sistema / i aziendale / i per tuo conto.

L'implicazione è che puoi implementare nuove implementazioni dei sistemi aziendali e nuove implementazioni delle risorse API, senza preoccuparti di rompere qualsiasi client esistente (perché i client hanno accesso solo alla tua API , non possono rilevare cambiamenti di implementazione dalla tua parte).

Detto questo, non c'è niente di particolarmente REST, o anche Web, su questo. Un messaggio di "intento" consegnato a un'API esposta come endpoint RPC offre gli stessi vantaggi.

La lezione principale è che non sei obbligato, o previsto, ad abbinare ogni creazione / lettura / aggiornamento / eliminazione di una risorsa 1-a-1 con un messaggio di creazione / lettura / aggiornamento / eliminazione nel tuo archivio dati.

    
risposta data 28.10.2016 - 05:11
fonte

Leggi altre domande sui tag