Che cos'è un'API? In inglese per favore.

Opere di Phillip Blackowl. Traduzione in spagnolo. Traduzione portoghese.

Prima di apprendere lo sviluppo del software, l'API suonava come una specie di birra.

Oggi uso il termine così spesso che di recente ho provato a ordinare un'API in un bar.

La risposta del barista fu di lanciare un 404: risorsa non trovata.

Incontro molte persone, che lavorano sia nella tecnologia che altrove, che hanno un'idea piuttosto vaga o errata di cosa significhi questo termine abbastanza comune.

Tecnicamente, API sta per Application Programming Interface. In un punto o nell'altro, la maggior parte delle grandi aziende ha creato API per i propri clienti o per uso interno.

Ma come si spiega l'API in un inglese semplice? E c'è un significato più ampio di quello utilizzato nello sviluppo e nel mondo degli affari? Innanzitutto, torniamo indietro e vediamo come funziona il Web stesso.

WWW e server remoti

Quando penso al Web, immagino una grande rete di server connessi.

Ogni pagina su Internet è memorizzata da qualche parte su un server remoto. Dopotutto, un server remoto non è così mistico: è solo una parte di un computer remoto che è ottimizzato per elaborare le richieste.

Per mettere le cose in prospettiva, puoi creare un server sul tuo laptop in grado di servire un intero sito Web sul Web (in effetti, un server locale è quello che gli ingegneri usano per sviluppare siti Web prima di renderli pubblici).

Quando digiti www.facebook.com nel tuo browser, una richiesta viene inviata al server remoto di Facebook. Una volta che il browser riceve la risposta, interpreta il codice e visualizza la pagina.

Per il browser, noto anche come client, il server di Facebook è un'API. Ciò significa che ogni volta che visiti una pagina sul Web, interagisci con l'API di alcuni server remoti.

Un'API non è la stessa del server remoto, piuttosto è la parte del server che riceve richieste e invia risposte.

API per servire i tuoi clienti

Probabilmente hai sentito parlare di aziende che confezionano API come prodotti. Ad esempio, Weather Underground vende l'accesso alla sua API dei dati meteorologici.

Scenario di esempio: il sito Web della tua piccola impresa ha un modulo utilizzato per iscrivere i clienti agli appuntamenti. Desideri offrire ai tuoi clienti la possibilità di creare automaticamente un evento del calendario di Google con i dettagli di tale appuntamento.

Uso dell'API: L'idea è di far dialogare il server del tuo sito web direttamente con il server di Google con una richiesta di creare un evento con i dettagli forniti. Il tuo server riceverà quindi la risposta di Google, la elaborerà e invierà informazioni pertinenti al browser, come un messaggio di conferma all'utente.

In alternativa, il tuo browser può spesso inviare una richiesta API direttamente al server di Google ignorando il tuo server.

In che modo l'API di Google Calendar è diversa dall'API di qualsiasi altro server remoto?

In termini tecnici, la differenza sta nel formato della richiesta e della risposta.

Per eseguire il rendering dell'intera pagina Web, il tuo browser si aspetta una risposta in HTML, che contenga un codice di presentazione, mentre la chiamata all'API di Google Calendar restituirebbe semplicemente i dati, probabilmente in un formato come JSON.

Se il server del tuo sito Web sta effettuando la richiesta API, il server del tuo sito Web è il client (simile al browser che è il client quando lo usi per navigare a un sito Web).

Dal punto di vista degli utenti, le API consentono loro di completare l'azione senza uscire dal sito Web.

La maggior parte dei siti Web moderni utilizza almeno alcune API di terze parti.

Molti problemi hanno già una soluzione di terze parti, sia essa sotto forma di libreria o servizio. Spesso è solo più semplice e affidabile utilizzare una soluzione esistente.

Non è raro che i team di sviluppo suddividano la loro applicazione in più server che comunicano tra loro tramite API. I server che eseguono le funzioni di supporto per il server delle applicazioni principale vengono comunemente chiamati microservizi.

Per riassumere, quando un'azienda offre un'API ai propri clienti, significa solo che hanno creato un set di URL dedicati che restituiscono risposte di dati puri, il che significa che le risposte non conterranno il tipo di sovraccarico di presentazione che ci si aspetterebbe in un interfaccia utente grafica come un sito Web.

Puoi fare queste richieste con il tuo browser? Spesso sì. Poiché la trasmissione HTTP effettiva avviene nel testo, il tuo browser farà sempre il possibile per visualizzare la risposta.

Ad esempio, puoi accedere all'API di GitHub direttamente con il tuo browser senza nemmeno bisogno di un token di accesso. Ecco la risposta JSON che ricevi quando visiti il ​​percorso API di un utente GitHub nel tuo browser (https://api.github.com/users/petrgazarov):

{
  "login": "petrgazarov",
  "id": 5581195,
  "avatar_url": "https://avatars.githubusercontent.com/u/5581195?v=3",
  "gravatar_id": "",
  "url": "https://api.github.com/users/petrgazarov",
  "html_url": "https://github.com/petrgazarov",
  "follower_url": "https://api.github.com/users/petrgazarov/followers",
  "following_url": "https://api.github.com/users/petrgazarov/following{/other_user}",
  "gists_url": "https://api.github.com/users/petrgazarov/gists{/gist_id}",
  "starred_url": "https://api.github.com/users/petrgazarov/starred{/owner}{/repo}",
  "subscriptions_url": "https://api.github.com/users/petrgazarov/subscriptions",
  "organisations_url": "https://api.github.com/users/petrgazarov/orgs",
  "repos_url": "https://api.github.com/users/petrgazarov/repos",
  "events_url": "https://api.github.com/users/petrgazarov/events{/privacy}",
  "arrived_events_url": "https://api.github.com/users/petrgazarov/received_events",
  "type": "User",
  "site_admin": false,
  "name": "Petr Gazarov",
  "company": "PolicyGenius",
  "blog": "http://petrgazarov.com/",
  "location": "New York",
  "email": "petrgazarov@gmail.com",
  "noleggiabile": null,
  "bio": null,
  "public_repos": 23,
  "public_gists": 0,
  "follower": 7,
  "seguito": 14,
  "Created_at": "2013-10-01T00: 33: 23Z",
  "updated_at": "02-08-2016T05: 44: 01Z"
}

Il browser sembra aver fatto bene a visualizzare una risposta JSON. Una risposta JSON come questa è pronta per l'uso nel tuo codice. È facile estrarre dati da questo testo. Quindi puoi fare quello che vuoi con i dati.

A sta per "Applicazione"

Per chiudere, aggiungiamo un altro paio di esempi di API.

"Applicazione" può riferirsi a molte cose. Eccone alcuni nel contesto dell'API:

  1. Un software con una funzione distinta.
  2. L'intero server, l'intera app o solo una piccola parte di un'app.

Fondamentalmente qualsiasi parte di software che può essere distintamente separata dal suo ambiente, può essere una "A" nell'API e probabilmente avrà anche una sorta di API.

Supponiamo che tu stia utilizzando una libreria di terze parti nel tuo codice. Una volta incorporata nel codice, una libreria diventa parte dell'app complessiva. Essendo un software distinto, la libreria probabilmente avrebbe un'API che le consente di interagire con il resto del codice.

Ecco un altro esempio: in Design orientato agli oggetti, il codice è organizzato in oggetti. Nella tua applicazione potrebbero essere definiti centinaia di oggetti che possono interagire tra loro.

Ogni oggetto ha un'API: un insieme di metodi e proprietà pubblici che utilizza per interagire con altri oggetti nell'applicazione.

Un oggetto può anche avere una logica interna privata, il che significa che è nascosto dall'ambito esterno (e non da un'API).

Da quello che abbiamo trattato, spero che toglierai il significato più ampio di API così come gli usi più comuni del termine oggi.

Risorse interessanti (cose che ho lasciato fuori ma è ancora molto interessante):

Un fantastico video di YouTube su DNS (Domain Name System)

Nozioni di base sul protocollo HTTP

Un fantastico video della Khan Academy sui principi di progettazione orientata agli oggetti