Nessun risultato. Prova con un altro termine.
Guide
Notizie
Software
Tutorial

Mappare le azioni 'CRUD' sui metodi HTTP

Effettuare le operazioni di base del servizio sfruttando direttamente i 'verbi' del protocollo HTTP
Effettuare le operazioni di base del servizio sfruttando direttamente i 'verbi' del protocollo HTTP
Link copiato negli appunti

Una volta spiegato come individuare una risorsa abbiamo bisogno di un meccanismo per indicare quali operazioni effettuare su di esse. Il principio dell'uso esplicito dei metodi HTTP ci indica di sfruttare i metodi (o verbi) predefiniti di questo protocollo, e cioè GET, POST, PUT e DELETE.

Facciamo un semplice esempio per provare a chiarire questo concetto. Quando inseriamo un URI nella barra degli indirizzi di un browser stiamo in realtà chiedendo al browser di eseguire un metodo HTTP sulla risorsa individuata dall'URI. Il metodo che implicitamente stiamo eseguendo è GET, il cui effetto è l'accesso ad una rappresentazione della risorsa identificata dall'URI.

Dal punto di vista del codice, non avremo bisogno di un metodo del tipo getCliente(1234) per ottenere la rappresentazione del cliente con codice 1234, sarà sufficiente sfruttare il metodo standard GET del protocollo HTTP sull'URI che identifica quel determinato cliente.

Questo rende uniforme l'invocazione di operazioni sulle risorse, cioè il client non ha bisogno di sapere qual è la specifica interfaccia da utilizzare per invocare il metodo che consente di ottenere la rappresentazione di un cliente. In un contesto non RESTful potremmo avere metodi come getCliente() o getCustomer() o altra specifica dipendente dalle scelte di chi ha sviluppato il Web Service.

In un contesto RESTful sappiamo già a priori come ottenere la rappresentazione di una risorsa. In altre parole, questo principio REST stabilisce una mappatura uno a uno tra le tipiche operazioni CRUD (creazione, lettura, aggiornamento, eliminazione di una risorsa) e i metodi HTTP.

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

È opportuno notare che questo principio è in contrasto con quella che è la tendenza generale nell'utilizzo dei metodi HTTP. Infatti, molto spesso viene utilizzato il metodo GET per eseguire qualsiasi tipo di interazione con il server. Ad esempio, spesso per l'inserimento di un nuovo cliente nell'ambito di un'applicazione Web viene eseguita una richiesta di tipo GET su un URI del tipo:

http://www.myapp.com/addCustomer?name=Rossi

Questo approccio non è conforme ai principi REST perchè il metodo GET serve per accedere alla rappresentazione di una risorsa e non per crearne una nuova. In pratica questo uso del metodo GET introduce un effetto collaterale che, tra l'altro, può avere delle conseguenze indesiderate se, ad esempio, l'URI viene invocato più volte o se la risorsa viene memorizzata in uno dei vari livelli di cache esistenti tra client e server.

Come principio generale, nel progettare un Web Service in modalità REST è utile evitare l'uso di verbi negli URI ma limitarsi ad utilizzare nomi, ricordandosi che un URI identifica una risorsa.

Allo stesso modo è opportuno sottolineare che il corpo di una richiesta HTTP con metodi PUT e POST è pensato per il trasferimento della rappresentazione di una risorsa e non per eseguire chiamate remote o altre attività simili.

Ti consigliamo anche