3. Che cos’è REST
• REST è l’acronimo di REpresentational State Transfer
• E’ un modello architetturale per creare API che utilizzano il protocollo HTTP
come metodo di comunicazione.
• Ogni applicazione è divisa in risorse
• Ogni risorsa è unica ed indirizzabile usando una sintassi universale
• Le risorse sono condivise usando un’interfaccia uniforme che preveda un
insieme vincolato di operazioni ben definite e un insieme vincolato di
contenuti
• Il protocollo deve essere: client-server, stateless e cachable.
4. Le risorse
• REST è caratterizzato dall’esistenza di risorse
• Ogni risorsa ha un identificativo unico e possiamo accederci tramite un
identificatore globale (che chiamiamo URI)
6. HTTP e REST: Request Headers
• Si tratta di istruzioni ulteriori che vengono aggiunte alla richiesta
• La lista completa è disponibile al seguente indirizzo:
(http://www.w3.org/Protocols/rfc2616/rfc2616-sec14.html)
• Possibili header sono
• Accept
• Location Header
• Age
7. HTTP e Rest: Response Status Codes
• Questi codici vengono prodotti assieme alla risposta e forniscono al client
dettagli sullo stato della richiesta
• La lista completa è disponibile al seguente indirizzo:
http://www.w3.org/Protocols/rfc2616/rfc2616-sec10.html
• 200: ok
• 201: created
• 204: no content
• 400: bad request
• 404: resource not found
• 500: server error
8. SOAP vs REST (differenze concettuali)
• estraiUtente(Utente)
• Questa è un’operazione REST perché stiamo accedendo a una risorsa (un dato)
• switchCategoria(Utente, oldCategory, newCategory)
• Questa è un’operazione SOAP
9. HttpClient
• Per invocare servizi REST in .NET è possibile utilizzare HttpClient:
• Metodi per i verbi comuni (DELETE, GET, PUT e POST). Ognuna di queste richieste viene
inviata in modo asincrono.
• Supporto di impostazioni e schemi di autenticazione comuni.
• Accesso ai dettagli SSL (Secure Sockets Layer) sul trasporto.
• Possibilità di recuperare, impostare ed eliminare cookie.
• Info sullo stato delle richieste HTTP disponibili per i metodi asincroni.
11. Verifica disponibilità della Rete
• In applicazioni mobile che usano un back-end la disponibilità della
connessione è fondamentale:
• L’applicazione in assenza di connessione potrebbe non aver nessun senso di utilizzo
• Politiche di gestione dell’off-line
• Sola lettura da un database locale
• Scrittura off-line e successiva sincronizzazione dei dati
12. Verifica connettività in iOS
• In Xamarin iOS è possibile utilizzare una classe helper disponibile su github,
basata sulla API :
• https://github.com/xamarin/ios-
samples/blob/master/ReachabilitySample/reachability.cs
13. Verifica connettività in Android
• In android è disponibile un oggetto ConnettivityManager, da cui ottenere un
oggetto NetworkInfo, che fornisce le infomazioni sulla rete e il suo stato:
• Richiede android.permission.ACCESS_NETWORK_STATE