Come funzionano le API?

Le API consentono alle applicazioni di scambiare informazioni inviando e ricevendo delle "chiamate API".

Obiettivi di apprendimento

Dopo aver letto questo articolo sarai in grado di:

  • Descrivere come funzionano le API
  • Differenziare tra un endpoint API e un client
  • Mettere a confronto diversi protocolli API

Argomenti correlati


Vuoi saperne di più?

Abbonati a theNET, il riepilogo mensile di Cloudflare sulle tematiche più discusse in Internet.

Fai riferimento all'Informativa sulla privacy di Cloudflare per scoprire come raccogliamo ed elaboriamo i tuoi dati personali.

Copia link dell'articolo

Come funzionano le API?

Le interfacce di programmazione delle applicazioni (API, Application programming interfaces) consentono ai programmi software di comunicare tra loro inviando e ricevendo delle "chiamate API", in parole semplici delle richieste di informazioni. Queste richieste sono inoltrate da un client API e vengono accettate da un endpoint API.

Per poter scambiare informazioni tra API, gli sviluppatori devono fornire all'API una descrizione dei tipi di richieste che è lecito accettare, i casi d'uso per cui è progettata e qualsiasi altra condizione (ad esempio, protocolli, schemi e requisiti di sicurezza) che terze parti siano tenute a rispettare.

Le chiamate consentono alle API di condividere delle funzionalità senza obbligare agli sviluppatori di riscrivere completamente le funzioni per ogni singola applicazione. Senza le API, gli sviluppatori non sarebbero in grado di replicare con facilità le funzioni tra più applicazioni o richiedere dati da altre app, servizi e provider.

Cos'è un'API?

Un'API è un'interfaccia che consente a dei programmi software di condividere dati e funzioni. Questo metodo di comunicazione contribuisce a migliorare le funzionalità della maggior parte delle applicazioni web moderne.

Immaginiamo ad esempio che Alice sviluppi un'applicazione capace di personalizzare delle playlist di musica classica in base all'umore di chi le ascolta. Invece di inserire manualmente migliaia di tracce per popolare queste playlist, può utilizzare un'API che si collega a un repository musicale esterno, risparmiando così tempo, denaro e problematiche di sviluppo.

I casi d'uso delle API sono pressoché illimitati. Esse mettono in collegamento servizi cloud, interrogano database, aggiornano automaticamente applicazioni per mobile, trasmettono contenuti in streaming a più dispositivi, aggregano i prezzi dei voli, le opzioni di consegna del cibo e molto altro ancora.

Che cos'è un client API?

Un client API, a volte chiamato “utente”, è il software che avvia una chiamata API.

Prima di poter interagire con un endpoint API, un client API deve verificare la sua identità. Questo aiuta a impedire a eventuali aggressori di sfruttare le API per sferrare attacchi DDoS o commettere azioni potenzialmente dannose.

In genere, l' autenticazione viene eseguita tramite uno dei quattro metodi seguenti: una stringa univoca di caratteri (la chiave API), una combinazione di nome utente e password, un token OAuth o mutual TLS. L'utilizzo di un metodo di autenticazione forte è uno dei modi in cui gli sviluppatori possono proteggere le API da eventuali attacchi. ( Scopri di più sulla sicurezza delle API.)

Cos'è un endpoint API?

Un endpoint API accetta la chiamata API e invia le informazioni richieste.

Sia i client API sia gli endpoint si riferiscono a programmi software ospitati su server, piuttosto che a dispositivi hardware. I server API possono ospitare più endpoint, a ognuno dei quali è assegnato un uniform resource identifier (URI) che ne consente l'individuazione da parte di un client API. Nella maggior parte dei casi, questo URI è un URL (Uniform Resource Locator), che punta verso posizioni basate su Internet (ad esempio, un sito web).

Che cos'è uno schema API?

Uno schema API è un metadato che definisce le specifiche che una chiamata API deve soddisfare per essere considerata valida. Queste specifiche possono includere particolari quali l'endpoint di destinazione, il metodo HTTP e altri requisiti stabiliti dagli sviluppatori.

Quando una chiamata API viene inviata da un client, deve soddisfare le condizioni specificate nello schema. Solo allora un endpoint API può restituire le informazioni richieste. Per dare un'idea, immaginiamo che Francesco stia organizzando una festa. Nell'invito, specifica che solo gli ospiti che porteranno margherite gialle riceveranno biglietti di ringraziamento dopo la festa. Se, tuttavia, Carolina decidesse di portare delle rose rosse alla festa, non riceverebbe un biglietto di ringraziamento in seguito.

Analogamente, una chiamata API che non soddisfa i requisiti stabiliti dallo schema API non riceverà una risposta.

Cos'è un'API?

Proprio come le API, le chiamate variano in base alle specifiche indicate nella documentazione allegata all'API. In generale, tuttavia, una chiamata API segue tre passaggi fondamentali.

  1. Il client API avvia la chiamata, ovvero la richiesta di informazioni. Il client API deve formulare la richiesta nel formato previsto dal protocollo e dallo schema forniti dall'endpoint API.
  2. L'endpoint API riceve la richiesta, autentica il client API e ne convalida lo schema. Questo passaggio contribuisce a garantire che: a) la chiamata provenga da una fonte verificata e b) siano soddisfatte le condizioni della richiesta.
  3. L'endpoint API invia le informazioni richieste al client API. Lo schema dell'API determina il tipo di risposte che possono essere restituite al client.

Per una spiegazione più approfondita delle chiamate API, leggi Che cos'è una chiamata API?

Quali protocolli e architetture utilizzano le API?

Le API sono supportate da diversi protocolli. Un protocollo è un metodo di comunicazione su una rete e indica all'API come formattare richieste e risposte. Il tipo di protocollo API utilizzato dipende dalla finalità per cui l'API è stata sviluppata, dai casi d'uso che supporta e dalle restrizioni a cui è soggetta.

I due protocolli API più comuni sono Simple Object Access Protocol (SOAP) e Remote Procedure Call (RPC). Il trasferimento di stato rappresentazionale (REST, Representational state transfer) è un'architettura software che viene spesso paragonata a questi protocolli.

SOAP fornisce un metodo standardizzato per l'invio e la ricezione di chiamate tra API che utilizzano sistemi operativi e architetture differenti. È anche compatibile con l' Hypertext Transfer Protocol (HTTP), il File Transfer Protocol (FTP), il Simple Mail Transfer Protocol (SMTP) e altri protocolli a livello applicazione. Può restituire dati ai client API esclusivamente tramite Extensible Markup Language (XML).

RPC è uno dei metodi più semplici e meno recenti per la comunicazione tra le API. Funziona avviando una chiamata procedurale remota, durante la quale un client richiede una funzione da un server remoto. La differenza principale tra RPC e SOAP/REST è che RPC aiuta a eseguire azioni (o funzioni) specifiche, mentre SOAP/REST viene utilizzato per recuperare risorse (o dati).

REST si riferisce a un'architettura REST, che determina parzialmente la formattazione delle chiamate API. In parole semplici, REST consente a un client di richiedere risorse da un server, che restituisce quindi le informazioni al client nel suo stato corrente. Le API REST utilizzano spesso il protocollo HTTP per formattare richieste e risposte, ma sono compatibili anche con (FTP), SMTP e altri. Possono restituire dati ai client API utilizzando diversi formati, tra cui XML, JavaScript Object Notation (JSON) e Hypertext Markup Language (HTML).

Le API sono vulnerabili ai rischi per la sicurezza?

Come qualsiasi elemento connesso a una rete, le API sono vulnerabili a exploit e a usi impropri. I principali attacchi API includono:

  • Attacchi basati sull'autenticazione: l'autenticazione è una parte fondamentale per garantire che le chiamate API vengano inviate e ricevute da fonti legittime. Tuttavia, gli aggressori possono comunque eludere queste misure per portare a termine gli attacchi, intercettando i token di autenticazione, rubando le chiavi API o utilizzando altre tattiche per ottenere credenziali riservate.
  • Exploit di vulnerabilità: le vulnerabilità delle API, come la mancata autorizzazione a livello di oggetto, la mancata autenticazione utente, l'eccessiva esposizione dei dati e altre vulnerabilità tratte da OWASP API Security Top 10, si riferiscono a difetti in un'API che possono consentire a potenziali aggressori di accedervi senza autorizzazione. Sfruttando queste vulnerabilità, gli attaccanti possono effettuare delle violazioni dei dati o utilizzare le API per lanciare attacchi più complessi.
  • Attacchi DDoS: gli aggressori possono inondare le API con traffico volumetrico nel tentativo di interrompere (o bloccare completamente) il servizio che forniscono.

Cloudflare API Shield aiuta a mitigare questi attacchi fornendo un'autenticazione forte, scansionando i payload alla ricerca di dati sensibili, convalidando gli schemi API e rilevando e prevenendo l'uso scorretto delle API. Scopri di più su Cloudflare API Shield.