REST Il paradigma REST è basato su un protocollo di comunicazione stateless, client-server,...

19
REST Il paradigma REST è basato su un protocollo di comunicazione stateless, client-server, chacheable e scalabile, tipicamente HTTP (ma non necessariamente, in realtà). Elementi fondamentali di un Web Services basato sull'architettura REST: Risorse Rappresentazione delle risorse Operazioni sulle risorse

Transcript of REST Il paradigma REST è basato su un protocollo di comunicazione stateless, client-server,...

Page 1: REST Il paradigma REST è basato su un protocollo di comunicazione stateless, client-server, chacheable e scalabile, tipicamente HTTP (ma non necessariamente,

REST

Il paradigma REST è basato su un protocollo di comunicazione stateless, client-server, chacheable e scalabile, tipicamente HTTP (ma non necessariamente, in realtà).Elementi fondamentali di un Web Services basato sull'architettura REST:RisorseRappresentazione delle risorseOperazioni sulle risorse

Page 2: REST Il paradigma REST è basato su un protocollo di comunicazione stateless, client-server, chacheable e scalabile, tipicamente HTTP (ma non necessariamente,

RISORSE

Un servizio RESTful gestisce un insieme di risorse Esempio: nel nostro sistema di carSharing le risorse potranno essere gli utenti le auto, i viaggi

Una risorsa può rappresentare una “collezione” di altre risorse

Esempio: una risorsa potrà essere un insieme di viaggi che corrispondono a un criterio di ricerca

Page 3: REST Il paradigma REST è basato su un protocollo di comunicazione stateless, client-server, chacheable e scalabile, tipicamente HTTP (ma non necessariamente,

RISORSEOgni risorsa è identificata attraverso un URL specificoEsempio:

http://CarSharing.com/Car/List/{userId}/{first}/{last}Insieme auto di un utente

http://CarSharing.com/Car/{carId}Singola auto

Possiamo definire una regola generale nella definizione delle URL: usare pochi tipi di risorse

scegliere i tipi di risorse tra concetti di basso livello,mentre concetti più complessi sono costruiti dal client mediante regole proprie.

Page 4: REST Il paradigma REST è basato su un protocollo di comunicazione stateless, client-server, chacheable e scalabile, tipicamente HTTP (ma non necessariamente,

Rappresentazioni

Ciascuna risorsa può avere più rappresentazioni diverse

Ad esempio la nostra applicazione potrebbe fornire una rappresentazione di un auto:

in formato HTML per la visualizzazione da parte di una pagina web

pdf per la stampajson per essere utilizzata da un altra applicazione.

Page 5: REST Il paradigma REST è basato su un protocollo di comunicazione stateless, client-server, chacheable e scalabile, tipicamente HTTP (ma non necessariamente,

OperazioniNell’approccio REST si usa un numero limitato di operazioni per leggere o modificare lo stato delle risorseLe operazioni corrispondono ai “metodi” definiti nel protocollo HTTP Non tutte le operazioni sono disponibili su tutte le risorse

operazione Metodo Http

Creazione nuova risorsaidempotente: Sostituzione risorsa esistente

PUT

Creazione nuova risorsaModifica (valori) risorsa preesistente

POST

Cancellazione risorsa DELETE

Accesso (visualizzazione, etc) alla risorsa

GET

Page 6: REST Il paradigma REST è basato su un protocollo di comunicazione stateless, client-server, chacheable e scalabile, tipicamente HTTP (ma non necessariamente,

Richiesta HTTPUna richiesta HTTP contiene:l’URL della risorsa a cui è riferital’operazione da effettuare (es. GET)informazioni aggiuntive (headers), ad esempio per indicare il tipo di rappresentazione richiestaper alcune operazioni, un “corpo” della richiesta (body); in particolare il body è presente nelle operazioni PUT e POST

User-Agent: Mozilla/5.0Accept: text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8Accept-Language:en-us,en;q=0.5Accept-Encoding:gzip,deflate

Page 7: REST Il paradigma REST è basato su un protocollo di comunicazione stateless, client-server, chacheable e scalabile, tipicamente HTTP (ma non necessariamente,

Risposta HTTPUna risposta HTTP contiene:un codice numerico che indica l’esito dell’operazione (status)informazioni aggiuntive (headers); ad esempio, il tipo di rappresentazione restituitoper alcune operazioni, un “corpo” della risposta (body)

HTTP/1.1 200 OKX-Powered-By: Servlet 2.4; JBoss-4.2.2.GAContent-Type: text/html<head><title>JBoss RESTEasy Project</title></head><body><h1>JBoss RESTEasy</h1><p>JBoss RESTEasy is an open source implementation of the JAX-RS specification..

Page 8: REST Il paradigma REST è basato su un protocollo di comunicazione stateless, client-server, chacheable e scalabile, tipicamente HTTP (ma non necessariamente,

Satus HTTPLo status è codificato su 3 cifre dove la prima cifra indica l'esito generale:2xx: operazione eseguita con successo3xx: redirezione (la risorsa desiderata si trova aun altro indirizzo)4xx: errore da parte del client5xx: errore interno al server

Page 9: REST Il paradigma REST è basato su un protocollo di comunicazione stateless, client-server, chacheable e scalabile, tipicamente HTTP (ma non necessariamente,

Formato JsonJSON (JavaScript Object Notation) è un semplice formato per lo scambio di dati. Basato su due strutture:Un insieme di coppie nome/valoreUn elenco ordinato di valori. Nella maggior parte dei linguaggi questo si realizza con un array, un vettore, un elenco o una sequenza.Queste sono strutture di dati universali. Virtualmente tutti i linguaggi di programmazione moderni li supportano in entrambe le forme.

Page 10: REST Il paradigma REST è basato su un protocollo di comunicazione stateless, client-server, chacheable e scalabile, tipicamente HTTP (ma non necessariamente,

Formato JsonI tipi di dato supportati sono:BooleaniInteri,reali,virgola mobileStringheArrayNullStrutture formate dai parametri supportati.

{ "type": "menu", "value": "File", "items": [ {"value": "New", "action": "CreateNewDoc"}, {"value": "Open", "action": "OpenDoc"}, {"value": "Close", "action": "CloseDoc"} ]}

Page 11: REST Il paradigma REST è basato su un protocollo di comunicazione stateless, client-server, chacheable e scalabile, tipicamente HTTP (ma non necessariamente,

Architettura Server

Il server dell'applicazione di carSharing, è basato sulla tecnologia REST implementata utilizzando il framework Jersey che aderisce alla JAX-RS che definisce i servizi mediante l'uso di annotazioni.

Annotazion

@Path Definisce il path della risorsa

@GET,@PUT,@DELETE Specifica il tipo di richiesta http

@Producer Specifica il tipo di risposta definita secondo MIME media types

@Consumer Specifica il formato accettato definito secondo MIME media types

@PathParam Associa i parametri al path

@CookieParam Associa i parametri ai cookie

@DefaultValue Definisce un valore di default in caso il parametro risulti assente.

Page 12: REST Il paradigma REST è basato su un protocollo di comunicazione stateless, client-server, chacheable e scalabile, tipicamente HTTP (ma non necessariamente,

Architettura Server

Il server dell'applicazione di carSharing, offre i propri servizi come REST implementati utilizzando il framework Jersey che aderisce alla JAX-RS che definisce i servizi mediante l'uso di annotazioni.

Annotazion

@Path Definisce il path della risorsa

@GET,@PUT,@DELETE Specifica il tipo di richiesta http

@Producer Specifica il tipo di risposta definita secondo MIME media types

@Consumer Specifica il formato accettato definito secondo MIME media types

@PathParam Associa i parametri al path

@CookieParam Associa i parametri ai cookie

@DefaultValue Definisce un valore di default in caso il parametro risulti assente.

Page 13: REST Il paradigma REST è basato su un protocollo di comunicazione stateless, client-server, chacheable e scalabile, tipicamente HTTP (ma non necessariamente,

Architettura Server

Page 14: REST Il paradigma REST è basato su un protocollo di comunicazione stateless, client-server, chacheable e scalabile, tipicamente HTTP (ma non necessariamente,

DB

Page 15: REST Il paradigma REST è basato su un protocollo di comunicazione stateless, client-server, chacheable e scalabile, tipicamente HTTP (ma non necessariamente,

Package Service

Contiene le risorse fornite agli utenti, tra le principali:

Risorsa Descrizione

User/ Rappresenta un utente

User/Feedback Rappresenta un feedback

Trip/ Rappresenta un viaggio

Trip/Passenger Rappresenta un passeggero di un trip

Trip/List Rappresenta un acollezione di viaggi

Car Rappresenta un auto

Car/List Rappresenta una collezione di auto

Notification Rappresenta una collezione di notifiche

Page 16: REST Il paradigma REST è basato su un protocollo di comunicazione stateless, client-server, chacheable e scalabile, tipicamente HTTP (ma non necessariamente,

Package DAOSi occupa dell'interfacciamento e della gestione del db:ConnectionManager:Si occupa della gestione delle connessioni al db, implementando il riciclo delle stesse gestite tramite un poll di connessioni libere, mediante il pattern singleton

DataAccessObject:Realizza le query verso il db , utilizzando una connessione richiesta al connectionManager.

Page 17: REST Il paradigma REST è basato su un protocollo di comunicazione stateless, client-server, chacheable e scalabile, tipicamente HTTP (ma non necessariamente,

Package

Package bean in questo package sono contenute classi che hanno

scopo di contenitori di dati. Package UtilityQui vengono offerti dei servizi di supporto

all'applicazione come conversione di immagini in stringhe per essere cosi trasportate mediante il protocollo http, gestione della memoria, ecc..

Package Configurationqui sono riposte informazioni di cofigurazione del

server.

Page 18: REST Il paradigma REST è basato su un protocollo di comunicazione stateless, client-server, chacheable e scalabile, tipicamente HTTP (ma non necessariamente,

Json vs Xml

SemplicitàJson ha una grammatica molto più piccola di xmlRidondanzaXML ha una ridondanza maggiore di JSON con conseguente aumento di pesoInteroperabilità Json e Xml hanno lo stesso potenziale di interoperabilità.

Xml attualmente è molto utilizzato ma Json inizia a farsi conoscere grazie alla facilità di conversione da Xml a Json e la presenza di librerie di parsing nella maggior parte dei linguaggi di programmazione.

Page 19: REST Il paradigma REST è basato su un protocollo di comunicazione stateless, client-server, chacheable e scalabile, tipicamente HTTP (ma non necessariamente,