Che cos'è REST?
Trasferimento di stato rappresentativo. Descrive come un sistema può comunicare lo stato con un altro. Un esempio potrebbe essere lo stato di un prodotto (nome, descrizione, ecc.) Rappresentato come XML, JSON o testo semplice. L'idea generalizzata di stato è definita una risorsa.
Che posizione occupa in un ecosistema di architettura web?
REST è comunemente associato all'interfaccia dei servizi Web poiché HTTP è di gran lunga il protocollo di operatore più comune. Nel modello a 7 livelli esiste a livello di applicazione . Tuttavia, vedere la sezione successiva.
Quanto strettamente (o liberamente) è accoppiato al protocollo?
REST non è HTTP. Utilizza HTTP perché nella sua forma più generale REST esiste per aiutare una macchina a mappare il concetto di verbo rispetto a una raccolta arbitraria di nomi. HTTP contiene un utile set di verbi generici (GET, PUT, PATCH ecc.) Che possono essere applicati a nomi arbitrari espressi come URI utilizzando HTTP, ad esempio GET http://example.org/Product(54 ).
Quali sono le alternative a REST e come si confronta REST con loro
Questo è simile a chiedere "Quanto RESTful è il mio approccio?" Utilizzare il seguente elenco (riassunto dal modello di maturità Richardson come descritto da Martin Fowler ):
Livello 0 - La palude del POX
Usa POST per tutto (legge, scrive, cancella). Questo è SOAP, POX, RPI ecc. Stai solo usando HTTP come tunnel per il tuo protocollo. Il target è un singolo endpoint che fa tutto in base al contenuto del corpo della richiesta.
Livello 1 - Risorse
Usa POST per tutto. Indirizzare più endpoint progettati per fornire informazioni su una cosa particolare. Hai appena scoperto risorse.
Livello 2 - Verbi HTTP
Usa i verbi HTTP contro le risorse. Ora lo stai ottenendo. POST è creare, PUT è sovrascrivere, OPZIONI per le operazioni disponibili, ELIMINA per, bene, eliminare la risorsa. Come risultato dell'uso di questi verbi, diversi codici di stato HTTP iniziano a diventare più rilevanti (202 ACCETTATO qualcuno?).
Livello 3 - Controllo hypermedia ( HATEOAS )
A questo punto fai il salto finale e introduci l'ipermedia come meccanismo di controllo del flusso. Un client REST non ha bisogno di conoscenze preliminari su come interagire con una particolare applicazione o server oltre una comprensione generica dell'ipermedia. Questo può essere comunicato in HTTP tramite il campo di intestazione Content-Type. I formati di testo includono AtomPub e (più conciso) HAL , mentre HyperAudio funziona bene per i flussi audio (vedi SoundCloud et al)