Attraverso una chiamata API un'applicazione web può interrogare un microservizio, ovvero chiedere qualcosa ad altri software: ecco cos’è e come funziona
La chiamata API è un processo attraverso il quale due software scambiano dati. Quando un’applicazione fa una chiamata API, invia ad un’altra applicazione una richiesta specifica che viene ricevuta e processata da una API.
Per comprendere cos’è e come funziona una chiamata API bisogna prima chiarire la natura e il ruolo delle API - Application Programming Interfaces: vediamo quindi cosa sono le API, cos’è una chiamata API e, più nel dettaglio, come avviene l’interazione tra un’applicazione e un’altra tramite chiamata API.
Le API sono elementi di una struttura intermedia che permette a diverse applicazioni web di comunicare tra di loro. Nei software che ne dispongono, le API si occupano di esporre alcuni dati verso l’esterno, in modo che le informazioni possano essere condivise con le altre applicazioni che ne facciano richiesta.
Il mondo del software ha da qualche anno abbandonato il tradizionale approccio “monolitico” per rivolgersi verso una nuova architettura delle applicazioni web, basata invece su microservizi indipendenti.
Ciò significa che oggi, quando si usa per esempio un social network, non si interagisce con un enorme software che gestisce tutte le richieste dell’utente, ma con una nutrita schiera di piccoli programmi che funzionano autonomamente: il login, la chat, etc. - in uno schema per cui ogni diversa funzione richiama un servizio.
All’interno di un’architettura fondata sui microservizi, le API sono l’elemento base della comunicazione tra software. Le applicazioni espongono verso l’esterno i servizi che vogliono condividere con altri tramite le API - piccoli operatori che restano in attesa di essere interrogati, ovvero di ricevere una chiamata API.
Il compito delle API è quello di ascoltare, verificare la validità delle comunicazioni e fornire una risposta ad ogni richiesta valida in entrata.
La chiamata API è l’operazione attraverso la quale un’applicazione web interroga un microservizio, ovvero chiede qualcosa a un altro software.
Si fa una chiamata API, per esempio, ogni volta che si fa login o si inseriscono i dati della propria carta di credito per completare un pagamento, ma anche ogni volta che si fa una ricerca su Google o si sceglie un film su Netflix.
Quel che succede durante una chiamata API, dal punto di vista di un’applicazione che richiede servizi ad un altro software, è più o meno quel che avviene nello schema più classico della comunicazione.
Nell’ambito dello scambio di informazioni tra applicazioni le API sono il medium, ovvero il mezzo di comunicazione che permette lo scambio di informazioni tra un software mittente, che in questo caso è il richiedente o client, e il programma destinatario, o server.
In questo senso la chiamata API è alla base dell’architettura per microservizi: le API sono i singoli “ricevitori” in attesa di chiamata, mentre la chiamata API è il processo che definisce il ruolo delle API nell’interazione tra software.
Quanto al messaggio inteso in senso stretto, invece, sono diverse le richieste che possono essere fatte tramite chiamata API.
Tra i possibili approcci all’architettura per microservizi, il più diffuso è quello denominato RESTful o Rest, una sorta di standard “esteso” per aderire al quale è richiesto il rispetto di determinati vincoli strutturali (es. la manipolazione delle risorse tramite rappresentazioni o l’autodescrittività dei messaggi).
I vari tipi di richiesta API oggi più diffusi corrispondono a 5 possibili predicati HTTP tipici dell’approccio architetturale Rest:
All’interno di una struttura per microservizi di tipo Rest, utto ciò che intercorre tra la richiesta del client e la risposta del server si svolge su un layer intermedio che si trova tra l’applicazione e il server (le API rientrano non a caso nel cosiddetto middleware). Qui si trovano anche gli elementi che costituiscono una API call, ovvero:
Uno dei vincoli tipici dell’approccio Rest riguarda il rapporto server-client: le due applicazioni devono poter evolvere separatamente, senza alcuna relazione di interdipendenza. Per poter comunicare, cioè, le applicazioni server e client devono conoscere solo ed esclusivamente l’URL della risorsa, cioè la strada per raggiungerla.
In questo senso, l’aspetto di una chiamata API Rest corrisponde con la URL della risorsa: la chiamata viene eseguita interpellando direttamente l’endpoint da cui ci si aspetta risposta, ovvero invocando un determinato URL.
Ammesso che l’endpoint sia corretto, come prima cosa il client verifica le opzioni disponibili tramite il cosiddetto Pre-flight, una richiesta preventiva che permette di conoscere i metodi di comunicazione a disposizione e il tipo di autenticazione necessario per l’esecuzione della chiamata (spesso username e password o un secret token).
L’applicazione che riceve la chiamata API risponde con una lista dei predicati disponibili e con eventuali altri requisiti. Il client formula la richiesta API; se è valida, l’API comunica al programma esterno la richiesta, e una volta ricevuta risposta distribuisce i dati al programma che li aveva richiesti.
La chiamata API è immediata e sincrona: una volta interpellata una API, l’applicazione client interrompe le proprie chiamate finché non riceve risposta o un messaggio di time-out.