API (application programming interface)

Un’interfaccia di programmazione delle applicazioni (API) è un codice che consente a due programmi software di comunicare. Un’API facilita lo scambio di dati, caratteristiche e funzionalità tra applicazioni software.

Le API sono utilizzate nella maggior parte delle applicazioni odierne, tra cui app mobili, app Web, software aziendale, servizi cloud e dispositivi Internet of Things (IoT).

Le API semplificano lo sviluppo del software consentendo ai team di sviluppo di integrare dati, servizi o funzionalità da altre applicazioni, anziché doverli sviluppare da zero.

Le API definiscono come uno sviluppatore che crea un’applicazione dovrebbe richiedere servizi da un sistema operativo (SO) o da un’altra applicazione ed esporre i dati su più canali e in contesti diversi.

Qualsiasi dato può essere condiviso con un’interfaccia di programmazione delle applicazioni. Le API sono implementate da chiamate di funzione composte da verbi e nomi; la sintassi richiesta è descritta nella documentazione dell’applicazione chiamata. Ad esempio, su un sito Web immobiliare, un’API potrebbe pubblicare le proprietà immobiliari disponibili in base all’area geografica, mentre una seconda API fornisce i tassi di interesse correnti e una terza API offre un calcolatore di mutui.

Nei primi giorni del Web 2.0, il concetto di integrazione di dati e applicazioni da diverse fonti era chiamato mashup. Il Web, il software progettato per scambiare dati tramite Internet e il cloud computing si sono tutti uniti per aumentare l’interesse per API e servizi.

Illustrazione metaforica in cui un sistema di api condivide con tutti la conoscenza

Come funzionano le API? Le API sono composte dai seguenti due elementi correlati:

  • Una specifica che descrive come le informazioni vengono scambiate tra programmi, sotto forma di richiesta di elaborazione, e una restituzione dei dati necessari.
  • Un’interfaccia software scritta secondo tale specifica e pubblicata in qualche modo per l’uso.

Questa architettura è in genere descritta in termini client-server. L’applicazione che invia una richiesta è il client e l’applicazione che invia la risposta è il server. L’API collega i due.

Si dice che il client che desidera accedere alle funzionalità e alle capacità dell’API la chiama e si dice che il server che crea l’API la pubblica.

Le API autorizzano e concedono l’accesso ai dati richiesti dagli utenti e da altre applicazioni. L’accesso è autenticato a un servizio o a una parte di funzionalità utilizzando ruoli predefiniti che stabiliscono chi o quale servizio può accedere ad azioni e dati specifici. Le API forniscono anche una traccia di controllo che specifica chi e cosa ha avuto accesso al sistema e quando ciò è accaduto.

Le applicazioni che chiamano le API erano tradizionalmente scritte in linguaggi di programmazione specifici. Le API Web possono essere chiamate tramite qualsiasi linguaggio di programmazione, ma anche le pagine Web create in Hypertext Markup Language (HTML) o gli strumenti di generazione delle applicazioni possono accedervi.

Le architetture più comuni per le API sono Representational State Transfer (REST) ​​e Simple Object Access Protocol (SOAP), che definisce una specifica di protocollo di comunicazione standard per uno scambio di messaggi basato su Extensible Markup Language o XML. SOAP richiede meno codice di basso livello correlato all’infrastruttura rispetto a REST. Tuttavia, le API REST sono più facili da scalare e ridistribuire e più semplici da implementare e integrare con siti Web e servizi. Le API REST sono le più utilizzate oggi, in particolare per le interazioni Web.

Le API WebSocket sono un’altra forma di API. Utilizzano oggetti JavaScript Object Notation per trasferire dati. Le API WebSocket forniscono anche funzioni di callback per abilitare la comunicazione bidirezionale tra client e server. Sono comunemente scritte in JavaScript, Python, C#, Go, Ruby e altri linguaggi.

Le API Remote Procedure Call (RPC) consentono ai client di chiamare altri processi su sistemi remoti come se il processo fosse un sistema locale. Le API RPC sono solitamente scritte in C++, Java, Python, Go, Ruby e .NET.

 

Perché le API sono importanti per le aziende

 

Le API hanno migliorato la qualità e la distribuzione di software e servizi. Il software personalizzato sviluppato per uno scopo specifico è spesso scritto per fare riferimento ad API che forniscono funzionalità utili in una varietà di contesti. Ciò riduce i tempi di sviluppo, i costi e il rischio di errori.

Il crescente numero di servizi Web che i provider cloud espongono tramite API ha anche incoraggiato la creazione di applicazioni specifiche per il cloud, sforzi IoT e app per supportare dispositivi mobili e utenti.

Le API aggiungono un livello digitale attraverso il quale i dati e le risorse aziendali di un’azienda vengono presentati con la governance e la sicurezza necessarie. Questo approccio migliora le interazioni con clienti, dipendenti e partner. Una maggiore funzionalità e portata dei servizi aumentano il valore fornito agli utenti e migliorano l’esperienza del cliente.

Le API consentono agli sviluppatori di risparmiare tempo nella creazione di un’applicazione integrando dati, servizi e altre funzionalità da altre applicazioni, in modo che lo sviluppatore non debba crearli da zero. Le API creano anche nuove opportunità di monetizzazione per le aziende, come la produzione di dati con pacchetti e piani personalizzati per i partner commerciali.

Quali sono i vantaggi dell’utilizzo delle API? Le API sono un insieme di regole. Standardizzano il modo in cui gli sviluppatori scrivono il codice applicativo, migliorando i processi di sviluppo software interni di un’organizzazione.

L’utilizzo delle stesse regole e formati semplifica il codice, rendendolo più trasparente. La standardizzazione facilita anche la collaborazione tra sviluppatori mentre creano componenti software con l’intento di integrarsi con le API. Questo, a sua volta, facilita lo sviluppo delle funzionalità e riduce il time-to-market.

Le API pubbliche e quelle condivise con i partner consentono a un’organizzazione di fare quanto segue:

  • Controllare e gestire in modo sicuro il modo in cui utenti e sistemi accedono ai dati e alle funzionalità del servizio.
  • Consentire a terze parti di utilizzare i propri dati, anche in senso limitato, il che aumenta l’esposizione del marchio di un’azienda.
  • Aumentare il database dei clienti e aumentare il tasso di conversione allineando i propri servizi ad altri marchi affidabili.
  • Monetizza le proprie API in modo che diventino una linea di entrate. Questa è una tattica comune per i gateway di pagamento online. Ad esempio, le aziende che utilizzano le API di PayPal sono disposte a pagare per utilizzare un sistema di pagamento affidabile.
  • Le API separano l’applicazione richiedente dal servizio di risposta, fornendo ulteriore sicurezza tra client e server.

Sfide nell’uso delle API

Esistono anche sfide e limitazioni associate alle API, tra cui le seguenti:

  • Lo sviluppo delle API può essere complesso e costoso da integrare con i sistemi e i dati che rappresentano. Alcuni tipi di funzionalità potrebbero essere meglio affrontati tramite un approccio come l’automazione robotica dei processi.
  • Poiché sono guidate dalla standardizzazione, le API sono anche vulnerabili agli attacchi informatici correlati all’esposizione dei dati, all’autenticazione degli utenti, all’autorizzazione a livello di oggetto e di funzione, all’assegnazione di massa e agli attacchi di iniezione.
  • Le API vengono aggiornate frequentemente, rendendo difficile mantenere aggiornata la documentazione delle API. Una corretta gestione del ciclo di vita delle API e l’eliminazione delle vecchie API possono aiutare ad attenuare questa sfida.
  • Problemi di compatibilità e integrazione, poiché alcune API utilizzano formati di dati diversi, possono rendere difficile la condivisione dei dati, rallentando i tempi di risposta.
  • Le API devono essere testate per garantire che funzionino come necessario. L’approccio migliore è codificare le pratiche di test.

Tipi di API

Esistono quattro tipi di API:

  • Le API private, o API interne, vengono pubblicate internamente per l’uso da parte degli sviluppatori di un’azienda per migliorare i propri prodotti e servizi. Le API private non sono esposte a terze parti.
  • Le API pubbliche, o API aperte, sono pubblicate pubblicamente per essere utilizzate da chiunque. Non ci sono restrizioni su queste API.
  • Le API partner possono essere utilizzate solo da parti specifiche con cui un’azienda accetta di condividere dati. Queste API sono spesso utilizzate nelle relazioni commerciali per integrare software tra aziende partner.
  • Le API composite combinano più API per affrontare attività correlate o interdipendenti. Spesso migliorano la velocità e le prestazioni rispetto alle singole API.

Le API sono anche classificate in base al loro ambito e alla natura delle interazioni.

  • Le API locali offrono servizi di sistema operativo o middleware alle applicazioni. Esempi di API locali includono le API .NET di Microsoft, l’API di telefonia per applicazioni vocali e le API di accesso al database.
  • Le API Web sono progettate per rappresentare risorse come pagine HTML e sono accessibili tramite un semplice protocollo di trasferimento ipertestuale o HTTP. Qualsiasi URL Web attiva un’API Web. Le API Web sono spesso chiamate API RESTful perché l’editore delle interfacce REST non salva alcun dato internamente tra le richieste. Pertanto, le richieste di molti utenti possono essere mescolate come lo sarebbero su Internet.
  • Le API remote interagiscono tramite una rete di comunicazione per manipolare risorse esterne al computer che effettua la richiesta. Questa è una categoria più ampia che include, ma non è limitata alle API Web. Le API remote non devono essere progettate in base agli standard Web, anche se molte lo sono. Il database Java Connectivity API e Java Remote Method Invocation API sono due esempi di API remote.
  • Le API di programma sono basate sulla tecnologia RPC che fa apparire un componente di programma remoto come locale rispetto al resto del software. Le API di architettura orientata ai servizi (SOA), come la serie di API di Web Services di Microsoft, sono API di programma.

Perché la progettazione delle API è importante

Una buona progettazione delle API è fondamentale per un utilizzo di successo delle API. Gli architetti software dedicano molto tempo alla revisione di tutte le possibili applicazioni di un’API e del modo più logico per utilizzarla.

Le strutture dati e i valori dei parametri sono di particolare importanza, poiché devono corrispondere tra il chiamante di un’API e il suo editore.

Anche una solida sicurezza delle API è un aspetto importante della loro progettazione. Lo sfruttamento di API non configurate correttamente è una pratica comune per gli aggressori informatici. Un’API è un gateway che presenta i sistemi e i dati di un’organizzazione a utenti interni ed esterni. Qualsiasi compromesso può creare problemi di sicurezza ampi e gravi.

Se un’organizzazione sta pianificando di vendere la sua API come forma di monetizzazione, è importante che funzioni come previsto, in modo che possa arrivare al maggior numero possibile di persone.

Come creare un’API

Gli sviluppatori devono seguire questi passaggi per creare un’API:

  • Pianificazione. Gli sviluppatori definiscono lo scopo, l’ambito e la funzionalità dell’API. Una documentazione chiara è importante per allineare gli sforzi di sviluppo alle esigenze aziendali e degli utenti. Una specifica API come OpenAPI è un formato standard che può aiutare a fornire un modello.
  • Creazione. Gli sviluppatori iniziano a creare l’API in base alle specifiche delineate in precedenza. Questo processo comporta la creazione di un’architettura, la scrittura di codice per gestire richieste e risposte e l’integrazione di servizi di terze parti o sistemi back-end.
  • Test. Questa fase si concentra sulla convalida di funzionalità, prestazioni e sicurezza dell’API.
  • Documentazione. Questa fase si concentra sulla creazione di spiegazioni chiare di endpoint, parametri di richiesta, formati di risposta e codici di errore. Una buona documentazione aiuta a migliorare le esperienze utente degli sviluppatori di terze parti. La documentazione deve essere chiara e aggiornata.
  • Pubblicazione. Gli sviluppatori pubblicano l’API su un portale per sviluppatori o su un marketplace API dove terze parti possono trovarla e utilizzarla. Il monitoraggio e gli aggiornamenti continui aiutano a garantire che l’API continui a essere utilizzata.
  • Interruzione. Un’API viene rimossa dal servizio quando il suo supporto e sviluppo, comprese le correzioni di bug, si interrompono. Potrebbe essere sostituita con una versione più recente dell’API o un nuovo prodotto API.

Quali sono gli esempi di API?

I sistemi operativi e gli strumenti middleware espongono le loro funzionalità tramite raccolte di API solitamente chiamate toolkit. Due diversi set di strumenti che supportano le stesse specifiche API sono intercambiabili per i programmatori e sono la base per le dichiarazioni di compatibilità e interoperabilità. Le specifiche API .NET di Microsoft sono la base per un pacchetto middleware equivalente Linux open source ora supportato da Microsoft, ad esempio.

Molti prodotti e strumenti software forniscono funzionalità tramite API, dagli strumenti DevOps come Docker, GitLab e Jenkins alle piattaforme aziendali come Microsoft SharePoint. I social media, in particolare, sfruttano le API aperte per facilitare le funzionalità di terze parti, come la possibilità di creare feed di notizie e condividere foto.

Internet è il driver principale per le API. Aziende come Meta, Google e Yahoo pubblicano API per incoraggiare gli sviluppatori di terze parti a sfruttare le loro capacità. Queste API hanno fornito di tutto, dalle nuove funzionalità Internet che esplorano i siti di altri servizi alle app per dispositivi mobili che offrono un facile accesso alle risorse delle applicazioni Web. Nuove funzionalità, come la distribuzione di contenuti, la realtà aumentata e le nuove applicazioni della tecnologia indossabile, vengono create in gran parte tramite queste API.

Un altro esempio di API è WeatherKit, chiamata anche WeatherKit REST API. Questo servizio web Apple può essere utilizzato per fornire dati meteo ad applicazioni e servizi. Un’app meteo di terze parti, ad esempio, potrebbe utilizzare WeatherKit per recuperare dati meteo da Apple e fornirli sulla propria app. WeatherKit è disponibile per le app iOS, macOS, tvOS e watchOS.

Tendenze API

L’ubiquità di Internet, l’uso esteso del cloud computing e il passaggio dalle applicazioni monolitiche ai microservizi hanno contribuito a un maggiore utilizzo delle API. Le tendenze relative alle API includono quanto segue:

REST e Web. Le chiamate API Web possono provenire da qualsiasi linguaggio di programmazione, ma possono anche essere effettuate da pagine Web create in HTML o da strumenti di generazione di applicazioni. Il ruolo crescente di Internet e del cloud nella vita quotidiana e nelle attività aziendali ha ampliato l’uso di API e semplici strumenti di programmazione, o addirittura nessuna programmazione, per l’accesso alle API.

Sia REST che SOAP possono richiamare e connettersi, gestire e interagire con i servizi cloud. REST è sempre più preferito per le API Web perché utilizza meno larghezza di banda e offre più opzioni per linguaggi di programmazione come JavaScript e Python. I grandi siti Web, come Amazon, Google, LinkedIn e Twitter, utilizzano API RESTful.

API e cloud. Il cloud computing introduce nuove funzionalità per dividere il software in componenti riutilizzabili, collegare i componenti alle richieste e scalare il numero di copie del software in base alle variazioni della domanda.

Queste funzionalità cloud hanno spostato l’attenzione delle API da semplici modelli incentrati sul programmatore basati su RPC a modelli RESTful incentrati sul Web e persino a ciò che viene chiamato programmazione funzionale o modelli lambda di servizi che possono essere scalati all’istante in base alle esigenze nel cloud.

API as a service. La tendenza a pensare alle API come rappresentanti di risorse generali è cambiata. Molte applicazioni utilizzano le API come uno strumento generale, ma sono anche considerate servizi e normalmente richiedono uno sviluppo e una distribuzione più controllati. Alcune organizzazioni scelgono anche di monetizzare le proprie API in modo che altre organizzazioni possano utilizzarle a pagamento.

SOA e microservizi sono esempi di API di servizio. I servizi sono la tendenza più in voga nelle API, al punto che è possibile che tutte le API in futuro rappresentino servizi.

Intelligenza artificiale nelle API. L’intelligenza artificiale e l’apprendimento automatico vengono sempre più utilizzati per generare automaticamente documentazione e monitorare le tendenze di utilizzo delle API.

OpenAPI sta anche diventando una best practice da seguire quando si sviluppano API standard. OpenAPI è una specifica che definisce e documenta le API RESTful. Descrive le funzionalità, le operazioni, le risposte delle API e i dettagli per le API basate su HTTP.

L’automazione è diventata anche un ruolo importante per la progettazione delle API, in quanto aiuta a semplificare lo sviluppo e il test delle API. Gli strumenti di automazione vengono utilizzati anche per verificare l’aderenza alle policy di governance e standard.

Pubblicazione e gestione API

L’azienda che pubblica l’API controlla tutti gli aspetti della sua progettazione e utilizzo, tra cui sicurezza, affidabilità e addebito per l’utilizzo. Controlla anche l’aggiunta di funzioni, siano esse sviluppate dall’editore o da terze parti. Ciò significa che l’azienda deve mantenere le prestazioni dell’API in base ai suoi termini di servizio, come farebbe con qualsiasi applicazione o servizio.

I seguenti sono gli aspetti chiave della gestione e della pubblicazione delle API:

Test API. Come tutti i software, le API devono essere testate. Ciò convalida l’API pubblicata rispetto alle specifiche che gli utenti utilizzano per formattare le loro richieste. Il test API garantisce anche quanto segue:

  • Gli endpoint dell’applicazione e le funzioni di condivisione dei dati funzionano come previsto.
  • I feed di dati dei partner inviano i dati previsti, come, quando e dove sono previsti.
  • I dati spazzatura non entrano in un database e non creano problemi all’applicazione o problemi di danneggiamento dei dati.
  • Un’applicazione funziona su tutte le piattaforme, tra cui desktop, web e mobile.

Il test API viene solitamente eseguito come parte della gestione del ciclo di vita dell’applicazione, sia per il software che pubblica l’API sia per tutti i software che lo utilizzano. Le API devono anche essere testate nella loro forma pubblicata per garantire che siano accessibili correttamente.

Gestione API. La gestione API si riferisce all’insieme di attività associate alla pubblicazione di un’API per l’uso. La gestione consente agli utenti di trovare l’API e le sue specifiche e di regolamentare l’accesso ad essa in base a permessi o policy definiti dal proprietario.

La gestione delle API è diventata prevalente poiché le aziende dipendono sempre di più dalle API, ne adottano di più e affrontano le complessità amministrative che introducono. Le organizzazioni hanno esigenze di gestione diverse, ma in genere comprendono funzioni di base, tra cui sicurezza, governance, analisi e controllo delle versioni.

Le API richiedono una solida documentazione, livelli avanzati di sicurezza, test completi, controllo delle versioni di routine e alta affidabilità. Per soddisfare questi requisiti, le organizzazioni utilizzano software di gestione delle API, sia come piattaforma combinata che con strumenti individuali. Questi strumenti in genere coinvolgono diversi componenti principali: un portale per sviluppatori, gestione del ciclo di vita, un gestore delle policy, analisi, un archivio API e un gateway API.

Endpoint API e sicurezza. Gli endpoint API sono i punti in cui il client e il server comunicano e dove l’API riceve richieste di risorse. In genere sono un URL esposto dal server che consente ad altri sistemi di connettersi agli endpoint. Funzionano come punti di ingresso nella rete aziendale. Gli endpoint sono dove il codice di uno sviluppatore interagisce con il codice e i dati di un’organizzazione.

Gli endpoint API sono obiettivi interessanti per gli aggressori e devono essere protetti. Alcune misure di sicurezza sono le seguenti:

  • Utilizzare la limitazione della velocità per scoraggiare i bot e le minacce di negazione del servizio distribuite.
  • Convalidare l’input per garantire che i dati corretti siano in arrivo e per prevenire gli attacchi di iniezione.
  • Memorizzare le password come valori hash asimmetrici.