I principali Metodi HTTP (idempotenti e non idempotenti) utilizzati nello sviluppo di API REST
L’approccio REST è uno dei più diffusi nella progettazione e nello sviluppo delle web API. All’interno dell’architettura REST, basata su HTTP, le operazioni avvengono tramite “verbi” specifici noti come Metodi HTTP, che permettono di interagire con le risorse.
I 5 Metodi HTTP più comuni nello sviluppo di API RESTful sono GET, PUT, DELETE, POST e PATCH: questi “verbi” essenziali permettono di eseguire le cosiddette operazioni CRUD (Create, Read, Update, Delete), ovvero consentono di creare, leggere, aggiornare e cancellare le risorse.
Le API REST, o REStful, sono quelle che seguono i principi del Representational State Transfer (REST), uno stile architettonico definito nel 2000 dall’informatico Roy Fielding che prevede, tra le altre cose, la netta separazione di client e server, l'adozione di interfacce uniformi e la creazione di una struttura stratificata in cui ogni livello ha le sue specifiche responsabilità.
Quando si avanza una richiesta tramite un’API REST, quest’ultima trasferisce al client non la risorsa vera e propria, ma una rappresentazione del suo stato, che però è sufficiente a soddisfare la richiesta.
Per essere considerata RESTful, un’API deve essere conforme ai seguenti principi:
L’applicazione di questi concetti permette di sviluppare API veloci, leggere e facili da scalare, ed è oggi alla base dello sviluppo delle web API.
In una richiesta API RESTful, l’informazione (ovvero la rappresentazione della risorsa) può essere trasferita in diversi formati, dal JSON all’HTML. La comunicazione, però, avviene sempre tramite HTTP request.
I Metodi HTTP, in particolare, sono componenti cruciali di ogni API REST, in quanto permettono al client di specificare l’azione da eseguire sulla risorsa e quindi di interagire con essa. Noti anche come “verbi” HTTP, questi elementi sono presenti in ogni richiesta API RESTful e consentono al client di fare azioni CRUD (Create, Read, Update, and Delete) sulle risorse in modo standardizzato e predicibile.
In un’architettura API REST si usano sia HTTP Methods idempotenti come GET e PUT, che permettono di sviluppare un web service efficiente e con un’alta tolleranza agli errori, sia metodi non idempotenti. La differenza è sostanziale: usando metodi idempotenti, più chiamate diverse con gli stessi parametri producono lo stesso effetto di una singola chiamata, senza moltiplicare i possibili effetti dell’operazione sul server e restituendo sempre la stessa informazione. Quando si usano “verbi” non idempotenti come POST e PATCH, al contrario, si può modificare lo stato del server esponendo il sistema a diversi effetti collaterali, tra cui la creazione di risorse indesiderate.
Tra i Metodi HTTP più comuni nelle API REST ci sono GET, PUT, DELETE, POST e PATCH, che permettono al client di leggere una risorsa, crearla, cancellarla oppure modificarla:
Soltanto i metodi idempotenti possono essere considerati sicuri, in quanto non influiscono sullo stato del server e permettono di prevedere gli effetti delle operazioni del client sul server e sulle singole risorse. Tuttavia, anche i metodi non idempotenti come POST e PATCH, possono essere utilizzati in maniera sicura implementando adeguati sistemi di autenticazione, autorizzazione e gestione delle chiamate API.
Oltre ai cinque Metodi HTTP descritti, legati alle operazioni CRUD, ve ne sono altri molto utili nello sviluppo di API RESTful, in quanto non modificano lo stato della risorsa ma permettono di eseguire azioni importanti come verificare il suo stato o seguire il percorso di una richiesta:
I Metodi HTTP sono uno dei pilastri fondamentali nello sviluppo di API RESTful: definendo le operazioni in modo standardizzato e prevedibile, rendono le API interoperabili e facilitano la loro integrazione all’interno delle applicazioni. L’uso dello standard, inoltre, rende le API più intuitive e semplici da usare anche per il client.