API REST

menu icon

API REST

Le API REST forniscono un modo flessibile e leggero per integrare le applicazioni e sono emerse come il metodo più comune per connettere i componenti nelle architetture di microservizi.

Cos'è un'API REST?

Un'API, o application programming interface, è una serie di regole che definisce il modo in cui le applicazioni o i dispositivi possono connettersi e comunicare tra loro. Un'API REST è un'API conforme ai principi di progettazione dello stile architetturale REST o representational state transfer. Per questo motivo, le API REST sono a volte indicate come API RESTful.

Definito per la prima volta nel 2000 dallo scienziato informatico Dr. Roy Fielding nella sua tesi di dottorato, REST fornisce un livello relativamente elevato di flessibilità e libertà per gli sviluppatori. Questa flessibilità è solo uno dei motivi per cui le API REST sono emerse come un metodo comune per connettere componenti e applicazioni in un'architettura di microservizi.

Principi di progettazione REST

Al suo livello più basilare, un'API è un meccanismo che consente a un'applicazione o a un servizio di accedere ad una risorsa all'interno di un'altra applicazione o un altro servizio. L'applicazione o il servizio che effettua l'accesso si chiama client e l'applicazione o il servizio che contiene la risorsa si chiama server.

Alcune API, come SOAP o XML-RPC, impongono un rigido framework agli sviluppatori. Le API REST possono però essere sviluppate utilizzando praticamente qualsiasi linguaggio di programmazione e supportano una varietà di formati di dati. L'unico requisito è che si allineino ai seguenti sei principi di progettazione REST - noti anche come vincoli architetturali:

  1. Interfaccia uniforme. Tutte le richieste API per la stessa risorsa devono presentarsi uguali, indipendentemente dall'origine della richiesta. L'API REST deve garantire che lo stesso blocco di dati, come ad esempio il nome o l'indirizzo e-mail di un utente, appartenga a un solo URI (uniform resource identifier). Le risorse non devono essere troppo grandi ma devono contenere tutte le informazioni di cui il client può avere bisogno.
  2. Disaccoppiamento client-server. Nella progettazione di API REST, le applicazioni client e server devono essere completamente indipendenti l'una dall'altra. Le sole informazioni che l'applicazione client deve conoscere è l'URI della risorsa richiesta; non può interagire con l'applicazione server in alcun altro modo. In modo analogo, un’applicazione server non deve modificare l’applicazione client e limitarsi a trasferirle i dati richiesti tramite HTTP.
  3. Condizione di stateless. Le API REST sono stateless, il che vuol dire che ogni richiesta deve includere tutte le informazioni necessarie per elaborarla. In altre parole, le API REST non richiedono alcuna sessione lato server. Alle applicazioni server non è consentito archiviare dati correlati a una richiesta client.
  4. Possibilità di memorizzazione nella cache. Quando possibile, le risorse dovono essere memorizzabili nella cache sul lato client o server. Anche le risposte del server devono contenere informazioni che indicano se la memorizzazione in cache è consentita per la risorsa fornita. L'obiettivo è quello di migliorare le prestazioni sul lato client, aumentando al tempo stesso la scalabilità sul lato server.
  5. Architettura di sistema a livelli. Nelle API REST le chiamate e le risposte passano attraverso diversi livelli. Come regola generale, non presumere che le applicazioni client e server si connettano direttamente tra loro. Potrebbero esserci diversi intermediari nel loop di comunicazione. Le API REST devono essere progettate in modo che né il client né il server possano capire se comunicano con l'applicazione finale o con un intermediario.
  6. Codice on-demand (facoltativo). Le API REST di solito inviano risorse statiche ma, in certi casi, le risposte possono contenere anche del codice eseguibile (come ad esempio gli applet Java). In questi casi, il codice deve essere eseguito solo on-demand.

Come funzionano le API REST

Le API REST comunicano tramite richieste HTTP per eseguire funzioni di database standard come la creazione, la lettura, l'aggiornamento e l'eliminazione di record (insieme di operazioni noto anche come CRUD, acronimo di "create, read, update and delete") all'interno di una risorsa. Ad esempio, un'API REST utilizzerà una richiesta GET per richiamare un record, una richiesta POST per crearne una, una richiesta PUT per aggiornare un record e una richiesta DELETE per eliminarne una. Nelle chiamate API possono essere utilizzati tutti i metodi HTTP. Un'API REST ben progettata è simile ad un sito web in esecuzione in un browser web con funzionalità HTTP integrate.

Lo stato di una risorsa in qualsiasi specifico istante, o data/ora, è noto come rappresentazione della risorsa. Queste informazioni possono essere fornite a un client in praticamente qualsiasi formato tra cui JSON (JavaScript Object Notation), HTML, XLT, Python, PHP o testo semplice. JSON è diffuso perché può essere letto sia dagli esseri umani che dalle macchine ed è è indipendente dal linguaggio di programmazione.

Anche le intestazioni e i parametri di richiesta sono importanti nelle chiamate API REST perché includono importanti informazioni di identificazione quali metadati, autorizzazioni, URI (uniform resource identifier), memorizzazione in cache, cookie e altro ancora. Le intestazioni di richiesta e le intestazioni di risposta, insieme ai codici stato HTTP convenzionali, sono utilizzate all'interno di API REST ben progettate.

Best practice delle API REST

Anche se la flessibilità è un grande vantaggio della progettazione delle API REST, la stessa flessibilità rende facile progettare un'API che si danneggia o che ha prestazioni scadenti. Per questo motivo, gli sviluppatori professionisti condividono le best practice nelle specifiche delle API REST.

L'OAS (OpenAPI Specification) stabilisce un'interfaccia per descrivere un'API in un modo che consenta a qualsiasi sviluppatore o applicazione di rilevarla e comprenderne appieno i parametri e le funzionalità - endpoint disponibili, operazioni consentite su ciascun endpoint, parametri delle operazioni, metodi di autenticazione e altre informazioni. La versione più recente, OAS3 (link esterno a IBM), include strumenti pratici, come l'OpenAPI Generator, per la generazione di client API e di stub server in diversi linguaggi di programmazione.

La protezione di un'API REST inizia anche con le best practice del settore, come ad esempio l'utilizzo di algoritmi di hashing per la protezione della password e HTTPS per una trasmissione dei dati protetta. Un framework di autorizzazione come OAuth 2.0 (link esterno a IBM) può contribuire a limitare i privilegi delle applicazioni di terze parti. Utilizzando una data/ora nell'intestazione HTTP, un'API può anche rifiutare qualsiasi richiesta che arrivi dopo un certo periodo di tempo. La convalida dei parametri e i JWT (JSON Web Token) sono altri modi per garantire che solo i client autorizzati possano accedere all'API.

API REST e IBM Cloud

I vantaggi delle API REST significano che continueranno ad essere parte integrante del processo di sviluppo di software, soprattutto con il ripercuotersi sulle operazioni di business e IT della richiesta di migliori esperienze cliente e più applicazioni.

Quando si tratta di soddisfare queste richieste, tendere ad adottare una maggiore automazione sarà di aiuto. Idealmente, si comincerà con piccoli progetti di successo misurabili, di cui potrai quindi eseguire la scalabilità e l'ottimizzazione per altri processi e in altre parti della tua organizzazione. Lavorando con IBM, avrai accesso a funzionalità di automazione basate sull'AI, inclusi dei flussi di lavoro predefiniti, per contribuire ad accelerare l'innovazione rendendo ogni processo più intelligente.

Gli strumenti e i servizi IBM possono aiutarti a risolvere importanti problemi relativi alle API, compresi la sicurezza, la governance e l'automazione, mentre continui a modernizzare le tue applicazioni.

Passa alla fase successiva:

  • Consulta IBM Cloud Pak for Integration, sviluppato sulla funzionalità principale di IBM API Connect per consentire agli architetti e agli amministratori di assumere il pieno controllo del ciclo di vita delle API.
  • Visita IBM Cloud API Docs, che contiene la documentazione per le API supportate su IBM Cloud.
  • Esegui la nostra valutazione della maturità dell'integrazione per valutare il tuo livello di maturità dell'integrazione nelle dimensioni critiche e scopri le azioni che puoi intraprendere per arrivare al livello successivo. 
  • Scarica la nostra guida all'integrazione agile, che esplora i meriti di un approccio basato sui container, decentralizzato e allineato ai microservizi per l'integrazione delle soluzioni.  

Inizia con un account IBM Cloud oggi stesso.