REST
REST è l’acronimo di Representational Transfer State, ed è un paradigma per la realizzazione di applicazioni Web che permette la manipolazione delle risorse per mezzo dei metodi GET, POST, PUT e DELETE del protocollo HTTP. Basando le proprie fondamenta sul protocollo HTTP, il paradigma REST restringe il proprio campo d’interesse alle applicazioni che utilizzano questo protocollo per la comunicazione con altri sistemi.
Il termite REST è stato coniato nel 2000 da Roy Fielding, uno degli autori del protocollo HTTP, per descrivere un sistema che permette di descrivere ed identificare le risorse web.
REST: Mettere al centro le risorse
L’intero paradigma REST ruota intorno al concetto di risorsa, che diventa il protagonista di un network di servizi. Per proporre un esempio pratico, pensiamo a quando utilizzando un browser decidiamo di visitare una pagina Internet. La pagina è un file HTML conservato su un computer; noi operiamo su un secondo computer per mezzo di un browser. Digitiamo sulla barra degli indirizzi del browser l’indirizzo internet della pagina che ci interessa visualizzare, ad esempio http://www.apple.com; premuto invio, il browser richiede la pagina descritta da quell’indirizzo, la richiesta arriva fino al server che risponde fornendo il contenuto della pagina al browser.
Fino a qui abbiamo assunto che per visualizzare una pagina internet sia necessario inserire l’indirizzo di quella pagina, e che quindi a ogni pagina internet corrisponda uno e un solo indirizzo internet. La risorsa pagina internet è quindi identificabile univocamente dal suo indirizzo internet.
Per comunicare fra di loro il nostro browser e il server che custodisce la pagina internet che ci interessa hanno utilizzato per comunica il protocollo HTTP. In particolare il browser ha inviato la richiesta HTTP “GET http://www.apple.com”. GET è uno dei metodi previsti dal protocollo HTTP ed è utilizzato per il reperimento delle risorse web.
Sulla pagina visualizzata dal browser e corrispondente all’indirizzo http://www.apple.com è attualmente presente una immagine cliccabile che permette di visualizzare informazioni relativamente all’iPod Touch. Cliccando sulla immagine, nella barra degli indirizzi del browser viene visualizzato un nuovo indirizzo, http://www.apple.com/ipodtouch/guidedtour/, il browser invia una nuova richiesta HTTP al server “GET http://www.apple.com/ipodtouch/guidedtour/” e quindi procede a visualizzare la nuova pagina.
REST: Metodi di accesso alle risorse
Oltre a digitare gli indirizzi internet e cliccare sui link, è possibile interagire con siti internet e applicazioni Web per mezzo dei form, ad esempio quando dobbiamo inserire i propri dati per registrarci ad un novo servizio. A differenza della semplice navigazione, quando si compila un form e lo si invia (di solito per mezzo di un apposito pulsante sistemato in fondo al form), la nostra operazione modifica lo stato del server, ad esempio aggiungendo il nostro nominativo alla lista delle persone iscritte ad un determinato servizio. La nostra operazione inserisce nuovi dati, e per indicare questa esigenza viene utilizzato non il metodo GET, ma il metodo POST.
Utilizzando i metodi GET e POST e l’indirizzo di una determinata risorsa web siamo quindi in grado da un parte di reperire una risorsa da un sistema remoto, nel nostro esempio una pagina internet, dall’altra di fornire una nuova risorsa ad un sistema remoto, nel nostro esempio il nominativo introdotto nel form.
Il protocollo HTTP prevede inoltre la possibilità di operare sulle risorse con due altri metodi: PUT per modificare e DELETE per cancellare una risorsa remota. Questi due metodi non sono disponibili per mezzo dei comuni browser, ma fanno parte del protocollo HTTP alla pari dei metodi GET e POST.
Per riuscire a visualizzare il significato dei differenti metodi previsti dal protocollo HTTP è possibile fare un’analogia con il “copia e incolla” sui programmi di composizione testo (Microsoft Word, Bocco Note); quando si seleziona una porzione di testo e si esegue il “copia”, è come eseguire il metodo GET per una risorsa remota; l’”incolla” corrisponde al POST, l’”incolla” su una porzione di testo già esistente corrisponde al PUT e la cancellazione di una parte di testo al DELETE.
Una seconda analogia più precisa è con le operazioni CRUD (CREATE, READ, UPDATE, DELETE) del database (il progetto CouchDB ad esempio è un sistema di persistenza distribuito che espone le operazioni CRUD per mezzo di API REST).
A loro modo anche le operazioni CRUD e di “copia e incolla” aderiscono al paradigma REST.
8 Dicembre 2007
Categorie: Soluzioni, Ricerca, Ruby on Rails, Ruby
Articoli simili
- No Related Posts
