REST - Representation State Transfer

REST è l'acronimo di REpresentation State Transfer. E' uno stile architetturale per i sistemi distribuiti e fu presentato da Roy Fielding nel 2000 in una sua famosa dissertazione.

In simplest words, in the REST architectural style, data and functionality are considered resources and are accessed using Uniform Resource Identifiers (URIs). The resources are acted upon by using a set of simple, well-defined operations. The clients and servers exchange representations of resources by using a standardized interface and protocol – typically HTTP.

Resources are decoupled from their representation so that their content can be accessed in a variety of formats, such as HTML, XML, plain text, PDF, JPEG, JSON, and others. Metadata about the resource is available and used, for example, to control caching, detect transmission errors, negotiate the appropriate representation format, and perform authentication or access control. And most importantly, every interaction with a resource is stateless.

All these principles help RESTful applications to be simple, lightweight, and fast.

ESEMPIO REST

Vediamo prima con un esempio cos'è REST, partendo da un servizio free che rispetta l'architettura di un servizio REST, cioè permette di interrogare, avere risposte dal server tramite semplici chiamate HTTP a delle url che identificano in modo univoco le risorse.

RICHIESTA ACCESS TOKEN

Per fare le richieste è necessario avere un access token, che vi viene dato dal servizio quando vi autenticate.

Cliccate sul pulsante Login in alto a destra

Selezionate il servizio si autenticazione (di terze parti):

Ora accedete il servizio vi ridirezione sulla pagina contenente l'Access Token che vi permette di sfruttare le API REST del servizio.

Tramite la Rest Console accedibile dal menù dei servizi è possibile eseguire le operazioni di creazione, update, cancellazione e listing delle risorse identificate dalle URI (Uniform Resource Identifier).

Le risorse dell'applicazione d'esempio che espone un API REST sono:

RICHIESTE TRAMITE Postman

Postman è un client per fare richieste a servizi REST, molto utilizzato per fare dei test a servizi che espongono API REST: richieste GET, POST, PUT e DELETE tramite una semplice interfaccia grafica.

Installate Postman scaricando il client o utilizzate la versione web del servizio.

Ora facciamo alcune richieste REST al servizio tramite Postman:

  1. Richiesta elenco degli user - GET https://gorest.co.in/public/v2/users

  2. Creazione di un nuovo utente - POST https://gorest.co.in/public/v2/users passando nel body della request i dati dell'utente

{
    "name": "Massimo Cappellano",
    "email": "massimo@iisponti.edu.it",
    "gender": "male",
    "status": "active"
}

nella response:

{
    "id": 6589,
    "name": "Massimo Cappellano",
    "email": "massimo@iisponti.edu.it",
    "gender": "male",
    "status": "active"
}

viene ritornato un id numerico che identifica in modo univoco l'utente creato. Lo status code della risposta è 201 Created. N.B. Ricordarsi di settare l'header Authorization con la propria chiave altrimenti il servizio risponde con messaggio d'errore ("Authorization failed");

3. Eseguiamo la ricerca dell'elemento - GET https://gorest.co.in/public/v2/users/{idUser} con ID dell'utente prima creato;

4. Eseguire la cancellazione - DELETE https://gorest.co.in/public/v2/users/{idUser} con ID dell'utente prima creato (notate che lo status code della risposta è: 204 No Content, invece se ripetiamo la richiesta o su una risorsa che non c'è, lo status code della risposta è: 404 Not Found );

5. Ripetere l'operazione GET dell'utente https://gorest.co.in/public/v2/users/{idUser} per verificare avvenuta cancellazione utente.

N.B: Ricordarsi di aggiungere nella richiesta per l'autorizzazione header HTTPAuthorization con valore Bearer YOUR-ACCESS-TOKEN, con valore del proprio ACCESS TOKEN:

Esempio servizio REST per Gestione Contenuti di un blog

Da vedere ad esempio sotto Guide esempi di chiamate Nested Routes:

Creazione di un'applicazione per gestire una ToDo list prendendo i todo da https://jsonplaceholder.typicode.com/

Esempio servizio REST per la gestione clienti

Last updated