Che cos'è un'API? Perché ci sono UTILI?

Pubblicato da Michele Saba

API è l’acronimo di Application Programming Interface (in italiano Interfaccia di Programmazione di un'Applicazione) e rappresenta un insieme di procedure che permettono lo scambio di informazioni tra due componenti software. Una buona API facilita lo sviluppo software fornendo dei componenti che possono poi essere impiegati facilmente dai programmatori.

Un’API dichiara un'interfaccia che ci permette di interagire con la logica software che sta rappresentando senza necessariamente dover sapere cosa succede “sotto al cofano”.

Le API sono ovunque: sistemi operativi, programmi, web, linguaggi di programmazione e così via è per questo motivo ci sono diversi tipi di API, noi concentreremo la nostra attenzione sulle Web API.


Che cosa sono le Web API?

Possiamo pensare alle Web API come a un insieme di protocolli che:

  • Permettono la comunicazione di più Web App tra di loro.
  • Permettono un’efficiente comunicazione tra più parti della stessa Web App.
  • Permettono a un’app client esterna di connettersi e comunicare con una Web App.

Ad esempio un'applicazione per smartphone che permette di controllare le previsioni del Meteo con una buona probabilità sta comunicando con una web API per ottenere i dati.

Nel mondo dello sviluppo web il termine Web API è spesso sinonimo di web service, con cui varie app client possono interagire in uno scambio di informazioni. La tipologia di API più comune al momento è REST: ne parleremo in una lezione successiva.


A cosa servono concretamente le API?

Le moderne Web App, come ad esempio Instagram o Twitter, dispongono di un sito web accessibile tramite browser ma anche di applicazioni per smartphone con diversi sistemi operativi come Android e iOS: ciascuna di queste applicazioni ha accesso agli stessi contenuti sincronizzati. Senza l’impiego di una Web API, l’architettura di questi servizi web potrebbe essere simile a questa:

no-api-logic

Nello schema ciascuna app client definisce la propria logica in maniera unica a sé stessa (spesso con un proprio linguaggio di programmazione) interagendo direttamente con il database per lo scambio di dati.

Aggiungere nuove funzionalità un servizio web che fa uso di un'architettura simile potrebbe diventare rapidamente molto complesso dovendo tener conto di così tanti progetti in parallelo dovendone sviluppare uno per ciascuna piattaforma, con il conseguente manifestarsi di ritardi nello sviluppo e di bug.

api-logic

Invece, mediante la creazione e l'impiego di una web API invece il processo si semplifica notevolmente: l’API infatti offre a tutte le applicazioni un'interfaccia comune con cui poter interagire con la logica del servizio offerto dalla Web App e col relativo database, il tutto in modo molto semplice.


Il formato JSON nelle Web App

In un contesto simile è bene che queste parti diverse della Web App utilizzino un formato standard per la comunicazione che sia allo stesso tempo facile da leggere per noi esseri umani e ottimale per la comunicazione tra computer: uno dei formati più comuni è JSON (JavaScript Object Notation). Ecco una semplice rappresentazione di un tweet in formato JSON:

json-tweet

Le parentesi graffe che delimitano le coppie chiave valore e contengono le seguenti informazioni sul Tweet:

  • Quando è stato creato, ovvero la data abbinata al campo created_at.
  • Il campo testuale in cui è presente il contenuto vero e proprio.
  • Il nome dell’utente che ha creato il Tweet
  • Il luogo in cui è stato creato

Si tratta di una rappresentazione particolarmente efficiente del contenuto del nostro database: qualsiasi applicazione avesse bisogno di sapere qualche informazione riguardo questo Tweet dovrà semplicemente andare a vedere qual è il contenuto associato alla chiave corrispondente.

Volendo possiamo andare a formare delle coppie chiave valore anche più complesse come ad esempio in questo tweet in cui è presente anche un elenco una lista di quelli che sono gli hashtag utilizzati:

JSON Tweet 2

E allo stesso modo volendo avremmo potuto inserire anche un altro JSON annidato all'interno in modo da, ad esempio, accedere a tutte le informazioni specifiche dell’utente senza necessariamente dover andare a effettuare un'altra richiesta:

JSON Tweet 3


Che cos’è un endpoint?

Ora che abbiamo un’idea di che cosa sia una Web API e di quale formato usare per la comunicazione, una domanda potrebbe sorgere spontanea: l’API aggrega queste funzionalità che sono esposte e messe a disposizione di noi sviluppatori e di altre app, ma come accedervi? Possiamo accedervi tramite gli endpoint, dei punti d’ingresso, tipicamente pattern URL che usiamo per accedere ai servizi di cui abbiamo bisogno offerti dall’API, usando il formato specifico dell’API.

Ad esempio questi potrebbero essere degli endpoint utilizzati dall’app di Twitter:

tweet-endpoints

Il primo endpoint /tweets/ fornisce l'elenco dei feed dei vari utenti che stiamo seguendo, il secondo è composto da /tweets/ e da una chiave una chiave primaria associata a un tweet che serve a reperire le informazioni di un tweet specifico. Il terzo endpoint fornisce l’elenco degli hashtag presenti all'interno del medesimo tweet, l’ultimo riguarda le informazioni sull’utente.


Ho una notizia che penso potrebbe interessarti!

Se hai letto questo articolo è ragionevole assumere che tu stia iniziando il tuo percorso nel fantastico mondo delle Web API. Ti interesserà allora sapere che questa lezione è parte del nostro corso Guida per Sviluppatori a Django REST Framework e Vue JS. Il corso si concentra sullo sviluppo di REST API e applicazioni web complete, utilizzando Django REST Framework per gestire il backend e il Vue.js per lo sviluppo del lato frontend. L'obiettivo del corso è fornirti una solida comprensione di come utilizzare questi due framework insieme per creare applicazioni web moderne, performanti, sicure e scalabili. Scopri di più e inizia subito!


Vuoi imparare Python come un/a professionista? Dai uno sguardo ai nostri