Introduzione

25 luglio 2017

REST (o, nella sua forma completa, Representational State Transfer), è un tipo di architettura software che ha acquisito sempre più considerazione nel web, tanto da essere considerata un vero e proprio standard per la creazione di Web API. Ideato da Roy Fielding, ad oggi uno dei principali autori delle specifiche dell'Hypertext Transfer Protocol (HTTP), il termine REST è largamente usato per descrivere ogni tipo di interfaccia capace di trasmettere dati per mezzo del protocollo HTTP, senza l'ausilio di tecnologie ausiliari come cookie o protocolli vari per lo scambio di messaggi. Ciò ha reso possibile la creazione di comunicazioni client-server completamente stateless (dove quindi ogni richiesta è completamente svincolata dalle altre). Una comunicazione di questo tipo permette di semplificare notevolmente la progettazione e l'implementazione delle applicazioni, dato che lo sviluppatore non dovrà farsi carico dell'onere di tenere traccia dello stato.

In questa guida ci occuperemo di sviluppare una minimale architettura REST, comprensiva di client e server. La nostra applicazione avrà l’obiettivo di gestire una piccola biblioteca digitale online, i cui dati saranno memorizzati in un database ma gestiti proprio tramite servizi REST. Il client si occuperà di richiedere un servizio al server, che invece si occuperà di fornirlo. Le richieste e le risposte che il client e il server si scambieranno viaggeranno tramite il protocollo HTTP.

Per potere seguire al meglio questa guida è bene avere delle nozioni base del noto linguaggio di programmazione web PHP e del DDBMS relazionale MySQL. Ulteriori approfondimenti sull’uso e la progettazione avanzata dei servizi REST sono inoltre disponibili su questa guida.

Scenario applicativo

Cominciamo con l'introdurre lo scenario applicativo in cui andremo ad inserire la nostra architettura REST. Supponiamo di dovere sviluppare un'applicazione web in grado di elaborare le quattro operazioni CRUD (Create, Read, Update, Delete) per la gestione di una piccola biblioteca.

La nostra applicazione dovrà quindi essere in grado di:

  • creare un nuovo Libro da aggiungere alla biblioteca (Create);
  • leggere un libro nella biblioteca (Read);
  • aggiornare le informazioni di un libro della biblioteca (Update);
  • eliminare un libro della biblioteca (Delete);

Come possiamo vedere, ognuna delle singole operazioni sopra riportate viene mappata in una delle operazioni CRUD. La nostra applicazione, che non sarà nient'altro che una applicazione PHP, avrà il compito di richiamare, tramite una web API, un servizio esterno che eseguirà una delle operazioni CRUD. Ciò vuol dire che la nostra applicazione (client) non conterrà alcuna logica di business ma si limiterà a mostrare all'utente i dati che gli saranno restituiti dal server. Una progettazione di questo tipo permette di disaccorpare la logica di business da quella di presentazione, rendendo possibile, oltre che una semplice manutenibilita dell'applicazione, anche di potere riadoperare la logica di business adoperata per la creazione dei servizi esterni, in una futura applicazione, riducendo di molto i suoi tempi di sviluppo.

REST e HTTP

Come abbiamo già anticipato nell'introduzione, i servizi REST sfruttano il protocollo HTTP per lo scambio di dati. L'insieme dei metodi HTTP, e cioè GET, POST, PUT e DELETE, semplifica di molto il mapping tra le azioni CRUD e le chiamate HTTP che andremo ad effettuare.

Metodo HTTP Operazione CRUD Descrizione
POST Create Crea una nuova risorsa
GET Read Ottiene una risorsa esistente
PUT Update Aggiorna una risorsa o ne modifica lo stato
DELETE Delete Elimina una risorsa

Vedremo in questa breve guida come poter dar vita a questo mapping tra i metodi HTTP e le CRUD. Per adesso ci basti sapere che è possibile, inviando una richiesta HTTP, eseguire uno specifico servizio esterno. Possiamo immaginare che, se da un lato lanceremo tramite il metodo DELETE la richiesta di cancellare una risorsa, dall'altro lato qualcuno si occuperà di prendere in carico questa richiesta ed elaborarla se presente tra i suoi servizi.

L'utente fa una richiesta HTTP DELETE per cancellare una risorsa (per esempio un libro della biblioteca). Il server prenderà in carico la richiesta e la elaborerà di conseguenza.

Nella prossima lezione cominceremo a modellare il database MySQL per gettare le basi della creazione dei nostri servizi REST.

Tutte le lezioni

 

1 2

Se vuoi aggiornamenti su Introduzione inserisci la tua e-mail nel box qui sotto:
 
X
Se vuoi aggiornamenti su Introduzione

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