REST e Java: paradigma, framework ed esempi

16 febbraio 2011

In questo articolo esamineremo le caratteristiche del paradigma REST, cercheremo le librerie Java più interessanti per implementare i nostri servizi e realizzeremo un progetto d’esempio.

Introduzione a REST

REST, o più esplicitamente Representional State Transfer, è una delle “buzzword” degli ultimi anni: l’acronimo indica uno stile architetturale per l’implementazione di servizi leggeri distibuiti, ed è stato utilizzato per la prima volta da da Roy T. Fielding per esporre la propria tesi di dottorato.

Il paradigma REST è basato su un protocollo di comunicazione stateless, client-server, chacheable e scalabile, tipicamente HTTP (ma non necessariamente, in realtà).

Nella sua forma più semplice si basa sull’utilizzo dei metodi propri del protocollo HTTP (Fielding stesso ha lavorato sullo standard) per effettuare tramite semplici richieste al server le consuete operazioni CRUD, garantendo al tempo stesso un facile disaccoppiamento tra client e server.

La richiesta di azioni che alterino lo stato della risorsa (modifiche di valore, rimozione, etc) seguono uno schema abbastanza naif simile al seguente:

un semplice esempio per mostare le corrispondenze tra CRUD e REST
OperazioneMetodo HTTP
Creazione nuova risorsa
idempotente: Sostituzione risorsa esistente
PUT
Creazione nuova risorsa
Modifica (valori) risorsa preesistente
POST
Cancellazione risorsa
 
DELETE
Accesso (visualizzazione, etc) alla risorsa
 
GET

REST consente quindi di implementare “servizi leggeri”, incentrati sulle risorse e facilmente scalabili, contrapposti ai webservices e ai tradizionali metodi RPC.

Interazione client-server e affordance delle risorse

Il client dovrà preoccuparsi di effettuare richieste basate sulla struttura della Url, sul metodo di richesta e sul content-type obiettivo della rappresentazione.

Dal lato del server invece appare particolarmente essenziale la scelta di path semplici e strutturati, e con una semantica di facile comprensione. E’ qui interessante osservare che una oculata scelta dei content-type da esporre consente di rendere disponibile e comprensibile una risorsa tanto agli agenti software che ai normali utenti umani.

Diviene perciò essenziale in questo contesto il concetto di affordance, con il quale si fa riferimento a quella che potremmo definire con una prefirasi come “la possibilità di azione su una risorsa“: il termine è qui mutuato da una definizione dello psicologo Gibson.

La coppia <risorsa, azione da eseguire sulla risorsa> viene sostanzialmente rappresentata da una URI, che diventa perciò anche un meccanismo oggettivo di definizione di una semantica condivisa tra client e server. Un esempio semplice che potremmo citare ricorrendo all’HTML su HTTP è quello dei tag link, se si pensa agli utilizzi per rappresentare grafi emergenti nella pratica che va consolidandosi per il web semantico, o alla possibilità di uso per generare vere e propie mappe di navigazione (gestita da alcuni bowser come Opera).

Se vuoi aggiornamenti su REST e Java: paradigma, framework ed esempi inserisci la tua e-mail nel box qui sotto:
 
X
Se vuoi aggiornamenti su REST e Java: paradigma, framework ed esempi

inserisci la tua e-mail nel box qui sotto:

Ho letto e acconsento l'informativa sulla privacy

Acconsento al trattamento di cui al punto 3 dell'informativa sulla privacy