API REST: ecco cosa sono, come funzionano e perché sono così diffuse
Le API REST, o API RESTful, sono interfacce di programmazione delle applicazioni che rispettano i vincoli dello stile architetturale REST introdotto per la prima volta dall’informatico Roy Fielding nel 2000. Queste interfacce di programmazione sono particolarmente versatili e forniscono un modello flessibile e leggero per integrare le applicazioni e lavorare con diversi tipi di dati.
Le API RESTful, d’altronde, sono ad oggi il modello più comune quando si tratta di connettere i componenti nelle architetture di microservizi.
Ma che cosa sono le API REST, che cosa indica questo acronimo e quali sono le caratteristiche di queste particolari Application Programming Interface?
API REST: cosa sono?
Prima di considerare nel dettaglio cosa sono le REST API è utile partire dalla definizione di API o Application Programming Interface. Si tratta, traducendo, di un’Interfaccia di Programmazione delle Applicazioni che prevede un insieme di regole e protocolli a determinare il modo in cui le applicazioni e i dispositivi possono connettersi e comunicare tra loro.
Un’API può essere intesa come una procedura che consente a un servizio o a un’applicazione di accedere a una risorsa all’interno di un altro servizio o un’altra applicazione o, per dirla in termini più generici, consente ad un client di accedere a una risorsa archiviata all’interno di un server. Vero e proprio elemento di intermediazione tra client e server, le API consentono di interagire con un computer o un intero sistema per recuperare informazioni o eseguire una funzione.
Il termine REST, o Representational State Transfert, è stato introdotto per la prima volta nel 2000 da Roy Fielding nella sua tesi di dottorato discussa presso l’Università della California. Si tratta di un’architettura software e di un insieme di vincoli architetturali inizialmente creati come linea guida per la gestione delle comunicazioni in una rete complessa. L’obiettivo, infatti, era quello di proporre un’alternativa a SOAP, il Simple Object Access Protocol sviluppato da Microsoft, che rappresentava fino ad allora la piattaforma più utilizzata per le interazioni client-server ma costringeva l’utente a rigide regole e si basava sul pesante formato XML.
Detto tutto questo, cosa sono le API REST?
Le API REST, o RESTful, sono Interfacce di Programmazione delle Applicazioni conformi ai principi di progettazione di stile architetturale REST che, per funzionare, ricorrono ai comandi dell’HTTP come GET, POST, PUT e DELETE.
Ad oggi rappresenta uno dei tipi di API più diffusi ed utilizzati dai provider di servizi web (ne sono un esempio Facebook, Amazon e Google) perché supportano uno scambio di informazioni seguendo standard di comunicazione software sicuri, affidabili ed efficienti.
Le caratteristiche di un’API RESTful e i principi di progettazione REST
Esistono tipologie di API, come il già citato SOAP, che impongono agli sviluppatori un rigido framework. Le API REST supportano un’ampia varietà di formati di dati e possono invece essere sviluppate utilizzando qualsiasi linguaggio di programmazione.
Per essere considerate RESTful, le API devono rispettare sei principi o criteri di progettazione REST stabiliti dallo stesso Fielding.
Questi vincoli architetturali sono:
- Interfaccia uniforme: fondamentale per la progettazione di qualsiasi servizio web RESTful, l’uniformità dell’interfaccia implica che ogni client REST può chiamare il server e accedere alle sue risorse nello stesso modo grazie all’URI (Unique Resource Identifier), indipendentemente dal fatto che il client sia un browser, un codice JavaScript o un’app mobile. Tutte le richieste API per la stessa risorsa devono essere trasferite in un formato standard. Il client invia così tutte le informazioni necessarie al server per elaborare la richiesta e restituire una risposta con le informazioni per modificare, cancellare o accedere alla risorsa.
- Architettura client-server: nella progettazione delle API RESTful, client e server devono essere indipendenti l’uno dall’altro. Ognuno si occupa infatti di determinati aspetti e funzionalità (l’unica informazione che il client deve conoscere è l’URI della risorsa richiesta, il server si limita a trasferire i dati richiesti tramite HTML) e la loro indipendenza è necessaria per evitare qualsiasi accavallamento delle competenze. Al contempo, un’architettura modulare di questo tipo garantisce la possibilità di sostituire uno o entrambi i componenti senza impattare sull’altro.
- Condizione d’assenza di stato: le API REST sono stateless, ovvero liberano il server dal compito di dover ricordare lo stato del client registrandolo in memoria o nel database. Questo significa, naturalmente, che ogni singola richiesta deve necessariamente includere tutte le informazioni necessarie per elaborarla, senza mai supporre che alcuni dati siano già presenti nel server di riferimento. Ogni sessione client-server è infatti unica e non correlata ad altre. Ciò permette al server di essere leggero, non dovendo memorizzare dati aggiuntivi sulle chiamate per gestire richieste future.
- Memorizzazione in cache: i server REST possono conservare dati nella memoria cache. Questo processo di archiviazione di alcune delle risposte nel client per migliorare il tempo di risposta del server rende necessario le risposte siano etichettare esplicitamente come memorizzabili nella cache o meno. In questo modo, si evita vengano salvate tutte le risposte e che i client usino stati vecchi o errati. Allo stesso modo, il server comunica al client anche il lasso di tempo in cui una data risposta è valida così che, una volta scaduto il termine, il client possa nuovamente contattare il server per avere un aggiornamento.
- Architettura stratificata: quello REST è un sistema basato su livelli composti da server intermedi. Questo garantisce politiche di sicurezza e migliora al contempo la scalabilità del sistema grazie a load balancing e a cache distribuite. Infatti, in caso di attacchi o eventi, questi possono essere così isolati e contenuti in singoli livelli permettendo di non esporre mai l’architettura nella sua interezza. Chiamate e risposte, insomma, possono attraversare diversi livelli senza che né il client né il server abbiano modo di capire se comunicano con l’applicazione finale o con un intermediario. D’altronde, il client non ha bisogno di sapere quale server risponderà alla sua richiesta.
- Codice on-demand: questo è l’unico vincolo facoltativo in un progetto REST. Generalmente, le API REST inviano risorse statiche ma possono in certi casi, appunto on-demand, inviare risposte contenenti del codice eseguibile direttamente dal client. In questo modo, i server possono temporaneamente estendere la funzionalità del client trasferendo appunto un codice di programmazione del software al client stesso. È il classico esempio della compilazione errata di un form su un sito web: è il browser stesso a evidenziare immediatamente l’errore proprio grazie al codice inviato dal server.
Come funzionano le API REST
Le linee guida REST che abbiamo visto sin qui rendono le API RESTful rapide, leggere e scalabili, ideali per l’IoT e lo sviluppo di app mobile. Ma come funzionano esattamente?
Le API REST comunicano attraverso richieste HHTP per eseguire funzioni di database standard. Parliamo, insomma, di funzioni come la creazione, la lettura, l’aggiornamento e l’eliminazione di record all’interno di una risorsa.
Quando un richiesta client viene inviata tramite API RESTful, questa trasferisce al richiedente uno stato rappresentativo della risorsa. Le chiamate API REST includono inoltre altre importanti informazioni identificative quali metadati, autorizzazioni URI, memorizzazione in cache, cookie e così via.
L’informazione, o rappresentazione della risorsa, viene poi fornita al client in un qualsiasi formato tra cui JSON, HTML, XLT, Phyton, PHP o testo semplice. Il formato JSON, JavaScript Object Notation, è uno dei linguaggi più diffusi, perché indipendente dal linguaggio di programmazione e può essere letto da esseri umani e macchine.
I vantaggi
Il successo delle REST API trova spiegazione considerando alcuni dei loro principali vantaggi.
Il primo, naturalmente, è la scalabilità. REST infatti ottimizza le interazioni client-server e rende di conseguenza il sistema più scalabile. Altrettanto importante è la totale indipendenza delle API REST dalla tecnologia utilizzata. Le applicazioni client e server possono infatti essere scritte con vari linguaggi di programmazione senza influire minimamente sulla progettazione dell’API stessa. Anche la tecnologia sottostante entrambi i lati può essere modifica, senza inficiare minimamente la comunicazione.
Le API RESTful sono note inoltre per la loro grande flessibilità. Grazie alla separazione tra client e server diventa possibile trattare l’evoluzione delle diverse componenti in modo indipendente, potendo modificare cioè solo una parte progettuale senza dover intervenire sia sul server che sul client. Naturalmente, essendo possibile stratificare le funzioni dell’applicazione, aumenta di conseguenza anche la flessibilità.
Vuoi saperne di più o chiedere un consiglio prima di sviluppare la tua soluzione digitale su misura? Parla con Beliven, la software house specializzata nella realizzazione di prodotti custom capaci di soddisfare le esigenze di ogni business. Se cerchi un’e-commerce, un nuovo sito aziendale, un’app o un’API, contattaci!