Loading AI tools
insieme di procedure informatiche atte allo sviluppo di applicazioni tramite interfaccia Da Wikipedia, l'enciclopedia libera
In un programma informatico, con application programming interface (API)[1], in italiano "interfaccia di programmazione dell'applicazione", si indica un insieme di procedure (in genere raggruppate per strumenti specifici) atte a consentire la comunicazione tra diversi computer o tra diversi software o tra diversi componenti di software[2]; spesso tale termine designa le librerie software di un linguaggio di programmazione[3], sebbene più propriamente le API siano il metodo con cui le librerie vengono usate per sopperire ad uno specifico problema di scambio di informazioni[4].
Esistono vari design model per le API. Le interfacce intese per la massima velocità di esecuzione spesso consistono in una serie di funzioni, procedure, variabili e strutture dati. Esistono anche altri modelli come gli interpreti usati per valutare le espressioni come con ECMAScript/JavaScript. Una buona API fornisce una "scatola nera", cioè un livello di astrazione che permette al programmatore di evitare di conoscere il funzionamento delle API ad un livello più basso. Questo permette di riprogettare o migliorare le funzioni all'interno dell'API senza cambiare il codice che si affida ad essa.
Esistono due linee di condotta per quanto riguarda la pubblicazione delle API:
Alcune API, come quelle standard di un sistema operativo, sono implementate come una libreria separata e distribuite con il sistema operativo. Altre API richiedono a chi pubblica il software di integrare l'API direttamente nell'applicazione e spesso richiedono l'utilizzo di chiavi API per l'autenticazione e il controllo degli accessi. Questo costituisce un'ulteriore distinzione nell'esempio precedente.
Le API di Microsoft Windows sono fornite con il sistema operativo e chiunque può utilizzarle. Il software per i sistemi embedded come le console per videogiochi generalmente ricadono nella categoria in cui le API sono integrate con l'applicazione. Anche se la documentazione ufficiale dell'API della Playstation può essere una lettura interessante, è quasi inutile senza la corrispondente implementazione sotto forma di una libreria separata o di un kit per sviluppatori.
Una API che non richiede il pagamento di diritti per il suo accesso ed utilizzo è detta "aperta". Le API fornite dal software libero, come software distribuito sotto licenza GPL, sono aperte per definizione, dal momento che si può accedere al sorgente del software e capire come funziona. Anche se esiste una "implementazione di riferimento" per una API (come quella di Microsoft Windows per la Windows API), non c'è nulla che impedisce la creazione di un'implementazione alternativa. Per esempio, la maggior parte della API di Windows può essere fornita in un sistema Unix da un software chiamato Wine.
In generale l'analisi dell'implementazione di una API per produrne una compatibile costituisce una violazione alla legge. Questa tecnica è chiamata ingegneria inversa. La situazione legale in questi casi presenta ambiguità quindi conviene affrontare il problema prima che l'attività di ingegneria inversa sia iniziata. Per esempio, una API può contenere a sua volta un brevetto.
La finalità è ottenere un'astrazione a più alto livello, di solito tra l'hardware e il programmatore o tra software a basso e quello ad alto livello semplificando così il lavoro di programmazione. Le API permettono infatti di evitare ai programmatori di riscrivere ogni volta tutte le funzioni necessarie al programma dal nulla, ovvero dal basso livello, rientrando quindi nel più vasto concetto di riuso di codice. Le API stesse rappresentano quindi un livello di astrazione intermedio: il software che fornisce una certa API è detto implementazione dell'API.
Poiché esistono molte varianti di API, nel 1985 è stato creato un progetto finalizzato alla creazione di uno standard. La famiglia che racchiude questi standard prende il nome di POSIX (acronimo di "Portable Operating System Interface for Unix"), il cui nome è stato ideato da Richard Stallman dopo la richiesta da parte dell'IEEE di un nome di facile memorizzazione.
Si può pensare ad un'applicazione che scriva le parole "Hello world" su uno schermo con vari livelli di astrazione:
Ovviamente, l'approccio del primo livello richiede molti passaggi ed ognuno di questi è molto più complesso di quelli dei livelli successivi. Altro svantaggio del primo approccio è che è poco pratico utilizzarlo nel caso in cui sia necessario visualizzare una certa quantità di informazioni sullo schermo; col secondo approccio l'operazione è molto più semplice, e nel terzo è sufficiente scrivere "Hello World". In genere utilizzare API di livello più alto comporta una certa perdita di flessibilità; per esempio, potrebbe essere molto difficile a livello di web browser ruotare attorno ad un punto un testo con i bordi lampeggianti, mentre questo compito potrebbe essere svolto in modo semplice ad un livello più basso. Questa differenza è un tipico esempio di compromesso che si può incontrare utilizzando un'API.
Una web API è un'API sviluppata in uno dei linguaggi specifici per realizzare web app ovvero, in parole povere, applicazioni che l'utente usa attraverso un comune browser[5]. Rappresenta una categoria di procedure (erogate attraverso interfacce visuali consistenti in librerie di strumenti spesso open source) molto diffuse a causa del massiccio impiego di sistemi di tipo SaaS; possono però essere sviluppate affinché interagiscano con applicazioni tradizionali.
Esse sono delle interfacce per sviluppatori o per utenti che necessitano di servizi aggiuntivi o specifici rispetto al sistema base. Sono pure gli stessi produttori di software (oltre che al mondo open source) che mettono a disposizione set già compilati di web API, non solo per integrare funzioni ma anche per facilitare l'operatività dell'utente o del reparto IT aziendale in caso di sistemi informatici sempre più complessi (si pensi alle soluzioni di tipo business).
Seamless Wikipedia browsing. On steroids.
Every time you click a link to Wikipedia, Wiktionary or Wikiquote in your browser's search results, it will show the modern Wikiwand interface.
Wikiwand extension is a five stars, simple, with minimum permission required to keep your browsing private, safe and transparent.