Introduzione alle API: Una guida per principianti sulla comprensione e utilizzo delle API in ingegneria software

Hai mai chiesto come puoi accedere alle tue applicazioni preferite come Facebook, Hashnode, dev.to, LinkedIn e così via? So che hai fatto attenzione e stai pensando rapidamente. O hai mai immaginato quanto fosse facile entrare nella App voli WakaNow e ottenere i biglietti più economici e accessibili da tutto il mondo? Anche gli appassionati di calcio non sono lasciati fuori in quanto possono ottenere i risultati in tempo reale.

La risposta a tutto questo è che queste applicazioni comunicano con altri sistemi per ottenere questi dati o per verificare i dettagli, e la modalità di comunicazione è attraverso un’API.

In questo articolo, il concetto delle API verrà demistificato e si otterrà una comprensione chiara e adeguata di cosa siano le API, i loro tipi e il loro modo di operare.

Un’API, che sta per Application Programme Interface, è semplicemente uno strumento attraverso il quale i sistemi o le tecnologie possono comunicare tra di loro condividendo informazioni o dati. Può essere ulteriormente spiegato come uno strato attraverso il quale i sistemi possono comunicare tra loro seguendo un protocollo o standard di condivisione.

Le API sono importanti perché permettono a sistemi e tecnologie di interagire tra loro, condividere dati e funzionalità, e lavorare insieme per creare sistemi potenti e efficienti. Inoltre, le API danno ai sviluppatori la superabilità di riunire le applicazioni per svolgere una specifica task. Per esempio, un blog di moda può integrare l’API Flutterwave per consentire ai clienti di pagare per i design o i seminari, puoi anche usare il tuo account Google per accedere a qualsiasi applicazione collegata.

Le API possono essere usate per ottenere dati da terze parti e scambiare informazioni, permettendoci di fare cose impazzate come ingegneri software.

Prendiamo questo analogia in considerazione, vuoi studiare presso una università. Devi seguire una serie di processi che comprenderanno l’esame e con i risultati di applicare alla tua istituzione desiderata. Non devi andare direttamente all’ufficiale di ammissione per una domanda, invece visiti semplicemente il loro portale, inserisci i tuoi dettagli e carica le credenziali. Mentre aspetti l’ammissione, una serie di cose si verificano nel backend che non sai nulla ma riceverai l’ammissione se i requisiti sono soddisfatti.

Il processo intero è il seguente, vogliamo comunicare con il servizio di ammissione scolastico e poiché non possiamo accedere direttamente all’ufficio di ammissione usiamo un layer API, che in questo scenario è il portale scolastico a cui ti riferirai come a un Endpoint. Ogni Endpoint ha il suo protocollo richiesto e il risultato atteso. In questo esempio, il portale scolastico ti protegge da ogni cosa complicata che succede nell’ufficio di ammissione.

Imaginate che non ci fosse un portale di ammissione, dovreste andare presso l’Ufficio Ammissione dell’Università per sottoporre i vostri dettagli, che sarebbe stato tempo consumante e non privo di errori.

Per connettere due applicazioni software via internet, un programma, noto come il client, invia una richiesta all’API dell’altra applicazione. Il client richiede una risorsa dalla base dati dell’app o richiede che viene eseguita un’azione sul server.

Dopo aver ricevuto e validato la richiesta del client, l’API esegue l’azione desiderata e restituisce una risposta al client. Questa risposta comprende lo stato della richiesta (completata o rifiutata) nonché le risorse richieste dal client.

Fig 1. Il funzionamento di un API

Ci sono circa quattro diversi tipi di API, che verranno spiegati.

Alcuni esempi di API pubbliche includono: Bitquery, Adoptapet, covalenthq.

Una API privata o interna è un tipo di API che è disponibile solo ai sviluppatori o alle persone che l’hanno creata. È accessibile solo quando viene inviata una richiesta dall’amministratore(i) al terzo party.

Alcuni esempi di API private includono;

  1. Twilio’s Programmable Voice API

  2. Stripe’s Connect API

  3. Google Maps’ private APIs for enterprise

  4. Salesforce’s Metadata API

  5. API Enterprise di GitHub per GitHub Enterprise

Un application programming interface (API) fornito da un’impresa o organizzazione per consentire ai sviluppatori esterni o ai partner di comunicare e interagire con i loro servizi, dati o piattaforma viene chiamato API partner. È anche conosciuto come API terze parti o API per sviluppatori. Questi API sono progettati per semplificare l’integrazione di sistemi, programmi o servizi diversi.

Le organizzazioni che desiderano estendere l’utilità dei loro prodotti o servizi e promuovere la cooperazione con sviluppatori esterni o aziende spesso forniscono API partner. Con l’aiuto di questi API, i partner possono creare programmi, strumenti o servizi che usano i dati, le funzioni o la tecnologia dell’azienda.

Alcuni esempi di API partner includono:

  1. Twitter API per partner

  2. API Spotify per Sviluppatori

  3. API Dropbox per partner

  4. API del Programma per Sviluppatori di eBay

  5. API di Pubblicità Prodotti Amazon

APIs Composite, anche dette API di aggregazione o mashup API, sono un tipo di API che mischia e aggrega informazioni o funzionalità da diverse API o servizi sottostanti in una singola interfaccia. Queste API semplificano il processo di integrazione e offrono una visualizzazione consolidata di diverse fonti di dati permettendo ai sviluppatori di accedere e interagire con diversi servizi attraverso una sola API.

Quando i programmatori hanno bisogno di ricevere informazioni ininterrottamente o di eseguire diverse azioni da molte fonti, le API composite sono utili. Un’API compositiva consente ai sviluppatori di inviare una sola richiesta per accedere ai dati o a condurre azioni in diversi servizi invece di inviare query separate ad ogni API. Il processo di integrazione è ottimizzato, la complessità è diminuita e l’efficienza è aumentata come risultato.

Ecco un esempio di API compositiva che aggrega i dati meteorologici da diversi fornitori di servizi meteorologici:

  1. WeatherAPI

  2. OpenWeatherMap API

  3. Weatherbit API

Per aggregare i dati meteorologici da questi numerosi fornitori e fornire ai sviluppatori un’interfaccia meteorologica unica, è possibile creare un’API compositiva. Ciò consente ai sviluppatori di ottenere informazioni meteorologiche da diversi fonti con una sola richiesta API.

Le Web APIs sono tra le più comunemente utilizzate perché la maggior parte delle nostre attività quotidiane ha a che fare con internet. Le Web APIs sono standard che permettono di avere la stessa cosa su browser differenti. Si riferisce a entrambe le parti della comunicazione. Le Web APIs, comunemente indicate come Application Programming Interfaces (APIs), sono interfacce messe a disposizione da web services o app che consentono la comunicazione e l’interazione online tra di loro e altri programmi software. I developers possono accedere in maniera programmatica a certi capacità, servizi o dati da una applicazione web o servizio grazie alle Web APIs.

1. API RESTful

Le API RESTful, che sta per Representational State Transfer Application Programming Interface, sono un insieme di standard che permettono agli computer di comunicare tra loro via web seguendo i principi di progettazione dell’architettura REST (o REpresentational State Transfer).

Parte delle API REST Include

  1. Richiesta —–→ Risposta

  2. Operazione – GET, POST, PATCH, UPDATE, DELETE

  3. Punto di arrivo – URL

  4. Parametro/Corpo

  5. Intestazioni

Fig 2 Diagramma di una API REST

I principi chiave di REST includono:

  1. Architettura client-server: REST separa i componenti client e server, permettendogli di evolversi indipendentemente. Il client invia richieste al server, il quale processa queste richieste e restituisce le risposte.

  2. Statelessness: REST è stateless, il che significa che ogni richiesta dal client al server deve contenere tutte le informazioni necessarie per capire e processare la richiesta. Il server non memorizza alcun contesto client tra le richieste, semplificando la scalabilità e permettendo un migliore caching.

  3. Interfaccia uniforme: REST promuove un insieme uniforme di interfacce e operazioni, normalmente utilizzando metodi HTTP standard come GET, POST, PUT e DELETE. Ogni risorsa in un sistema RESTful è identificata in modo univoco da un URL (Uniform Resource Locator).

  4. Risorse-Base: REST tratta tutto come una risorsa, come entità di dati, servizi o raccolte. Ogni risorsa ha un identificatore univoco e può essere accessibile e manipolabile utilizzando metodi HTTP standard.

  5. Rappresentazione delle Risorse: Le risorse in REST sono rappresentate utilizzando un formato specifico, come JSON (JavaScript Object Notation) o XML (eXtensible Markup Language). Il server invia rappresentazioni di risorse al client, che possono includere dati, metadata o link ipertestuali.

  6. Interazioni Stateless: Ogni richiesta inviata dal client al server è autocontenuta e non dipende da alcuna richiesta precedente o stato del server. Questo consente una migliore scalabilità, poiché il server non deve mantenere informazioni sull’applicazione delle sessioni del client.

Benefici di un’API REST

  1. Semplice e standardizzato

  2. Scalabile e stateless

  3. Ad alte prestazioni e memorizzabile nella cache

2. API SOAP

SOAP, acronimo di Simple Object Access Protocol, è un servizio Web conforme alle specifiche SOAP web services. È un popolare protocollo di messaggistica che utilizza XML come formato, schema ben definito e protocollo standard per l’utente. È stato definito dal World Wide Web Consortium. I protocolli SOAP coprono un ampio numero di protocolli di comunicazione Internet, in particolare HTTP, SMTP e TCP/IP.

Fig 3 Diagramma dell’API SOAP

Benefici dell’utilizzo dell’API SOAP

  1. Lingua, piattaforma e trasporto sono indipendenti.

  2. Lavora bene in ambienti aziendali distribuiti.

  3. Fornisce una significativa estensibilità pre-costruzione nella forma degli standard WS*.

  4. Gestione degli errori integrata.

  1. RPC.

Il protocollo remote procedural call (RPC) è un mezzo per inviare multipli parametri e ricevere risultati. È una chiamata di funzione remota, non esiste sulla macchina locale ma deve essere deployato da dove viene chiamato. È asincrono in quanto devi ottenere una risposta per essere considerato un successo. È una interazione semplice tra il Client e il server. Gli API RPC causano operazioni o procedure di operazione. RPC può utilizzare due linguaggi differenti, JSON e XML.

Fig 4 Protocollo RPC

  1. API GraphQL

GraphQL è un linguaggio di query per API che consente ai client di richiedere dati specifici e configura la risposta in base alle loro necessità.

Alcuni esempi di API GraphQL

GitHub GraphQL API, Shopify GraphQL API, SpaceX GraphQL API, Yelp GraphQL API, Twitter GraphQL API (Twitter API v2).

Confronto tra protocolli API

REST

SOAP

RPC

GraphQL

Funziona con XML, JSON, HTTP e testo normale

Funziona con XML per design

Richiede agli utenti di conoscere i nomi dei procedimenti

Funziona con HTTP

Funziona bene con i dati

Funziona bene con i processi (azioni)

Parametri specifici e ordini

Sicurezza modesta

Sicurezza avanzata

La documentazione può essere integrata daipermedia

Più difficile da utilizzare per i sviluppatori

Richiede documentazione estesa

Metodi di richiesta sono GET, PUT, DELETE, PATCH, UPDATE.

Metodo di richiesta è POST

Metodo di richiesta è POST

Metodo di richiesta è POST

A. Endpoints

Un endpoint API è un punto o estremo di un canale di comunicazione. Quando un API interagisce con un altro sistema, i punti di contatto di questa comunicazione vengono chiamati endpoint. In termini letterali, il luogo in cui le API inviano risorse e da cui le risorse partono si chiama un endpoint. Nelle API, un endpoint è tipicamente un Uniform Resource Locator (URL) che fornisce la posizione di una risorsa sul server.

Un esempio di un endpoint è

Esempio di Endpoint Twitter API

L’API di Twitter espone dati riguardanti tweet, messaggi diretti, utenti e altro.

Supponiamo che vogliate recuperare il contenuto di un tweet specifico. Per fare questo, puoi utilizzare l’endpoint di ricerca tweet, che ha l’URL api.twitter.com/2/tweets{id} (dove {id} è l’identificativo univoco del tweet).

B. richieste e risposte

Una richiesta API è un messaggio inviato dal Client al server. Una richiesta API è una richiesta fatta ad un API per accedere o modificare dati o eseguire una specifica azione. Una risposta API è i dati o l’informazione che viene restituita in risposta ad una richiesta API.

Per esempio, un utente clicca sul seguente link:

<a href=’http://localhost:2400/categories/01/flavours ’>

Mostra tutte le varietà disponibili nella categoria gusti

</a>

Il messaggio di richiesta HTTP sarà inviato come:

GET /categories/01/flavours HTTP/1.1

Host: localhost:2400

User-Agent: Chrome/5.0 [compatibile, Windows 10]

Richiesta API

1. Copia il codiceGET https://api.com/categories/flavours

Risposta API

1. Copia il codiceHTTP/1.1 200 OK

2. Content-Type: application/json

3.

4. {

5. "id": 01,

6. "flavours": "Chocolate"

7. }

Dalle questa richiesta possiamo vedere che l’Endpoint è URL – /categories/01/flavours.

La metodo di richiesta è GET, la specifica HTTP è 1.1, il dominio è localhost, il porto è 2400, Flavours è il resource, e il user-agent fornisce il browser e il sistema operativo.

C. Metodi HTTP (GET, POST, PUT, DELETE)

Le API che utilizzano il protocollo HTTP usano i metodi di richiesta HTTP (noti anche come “verbi HTTP”) per trasmettere le richieste del client al server. I metodi di richiesta HTTP più comunemente usati sono GET, POST, PUT e DELETE.

  1. GET è usato da un client per recuperare i dati da un server,

  2. PUT sostituisce i dati esistenti o crea dati se non esistono,

  3. POST viene usato principalmente per creare nuovi risorse,

  4. PATCH viene utilizzato per aggiornare parzialmente i dati da una risorsa, e

  5. DELETE rimuove i dati o le risorse specificati dall’utente sul server.

D. API Security – Authentication and Authorization

Questi due termini possono sembrare simili ma hanno funzioni diverse. L’autenticazione riguarda la verifica degli utenti o dell’identità, mentre l’autorizzazione riguarda l’accesso che ha un Utente o il permesso concesso per un’azione. Sono fondamentali per la sicurezza delle API, un metodo popolare per l’autenticazione e l’autorizzazione degli utenti è OAuth 2.0.

Different types of authorization

Esistono diversi metodi per l’autorizzazione. I seguenti sono vari tipi di autorizzazione API che potreste incontrare:

E. Chiavi API e Token

Le chiavi API sono stringhe di testo che forniscono l’identificazione e l’autorizzazione dell’applicazione client. In altre parole, identificano le applicazioni che fanno chiamate al server e determinano se le applicazioni chiamanti hanno accesso all’API server. Vengono utilizzate per tracciare tutte le attività e bloccare eventuali comportamenti maligni.

L’autenticazione tramite chiave API è stata creata per risolvere i limiti dell’autenticazione basica tramite informazioni di accesso condivise, che è un problema principale con l’autenticazione HTTP basica. Può essere utilizzata per due scopi. Il primo passo è identificare l’applicazione cliente che sta facendo una chiamata alla propria API backend. Il secondo passo è l’autorizzazione dell’applicazione cliente, che determina se l’applicazione inoltrante ha ricevuto l’autorizzazione a chiamare l’API.

Le chiavi API vengono ottenute da fornitori di chiavi API gestiti in una applicazione web.

Dove memorizzare le vostre chiavi API

Non inserite le chiavi nel vostro codice o in file perché potrebbero essere pubblicate pubblicamente quando pushate su GitHub, invece memorizzate le vostre chiavi API in una variabile di ambiente.

Un esempio di chiave API potrebbe apparire come segue.

chiave: a9nIbdnaoks97028Jlf.ains9NIKQMEO

Un token di accesso è una credenziale di sicurezza utilizzata per autenticare e autorizzare l’accesso ad un’API (Application Programming Interface). I token sono semplicemente credenziali uniche per il detentore del token che può accedere ad un’API.

Ecco un esempio di un JSON Web Token (JWT):

eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJzdWIiOiIxMjM0NTY3ODkwIiwibmFtZSI6IkpvaG4gRG9lIiwiaWF0IjoxNTE2MjM5MDIyfQ.SflKxwRJSMeKKF2QT4fwpMeJf36POk6yJV_adQssw5c

Questo è un JWT composto da tre parti separate da punti: l’intestazione, il payload e la firma. L’intestazione contiene tipicamente informazioni sull’algoritmo di firma del token, per esempio:

{

"alg": "HS256",

"typ": "JWT"

}

Il payload contiene le dichiarazioni o i giudizi sull’entità (utente, cliente, ecc.) e può includere informazioni come il soggetto, l’emittente, l’ora di scadenza e dati personalizzati. Per esempio:

{

"sub": "1234567890",

"name": "John Doe",

"iat": 1516239022

}

La firma è creata prendendo l’intestazione codificata, il payload e una chiave segreta, e applicando un algoritmo criptografico, come ad esempio HMAC-SHA256. La firma garantisce l’integrità e l’autenticità del token.

Quando si utilizza questo JWT, il client lo include nell’intestazione dell’autorizzazione degli API richieste in questo modo:

Autorizzazione: Bearer eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJzdWIiOiIxMjM0NTY3ODkwIiwibmFtZSI6IkpvaG4gRG9lIiwiaWF0IjoxNTE2MjM5MDIyfQ.SflKxwRJSMeKKF2QT4fwpMeJf36POk6yJV_adQssw5c

Il server API può quindi verificare l’autenticità del token, controllare la sua scadenza e utilizzare le informazioni contenute nel payload per l’autorizzazione e altri scopi.

Nota che il token d’esempio fornito qui è solo a scopo illustrativo e non dovrebbe essere utilizzato in un ambiente di produzione.

I token e le chiavi sono entrambe utilizzati per l’autenticazione e l’autorizzazione, tuttavia, differiscono nei seguenti modi:

Le chiavi API sono tipicamente utilizzate per l’identificazione e l’autenticazione del cliente o dell’applicazione durante una visita all’API. Spesso assumono la forma di stringhe lunghe e generate casualmente che fungono da credenziali. I token, d’altro canto, sono concessi ai clienti o utenti autorizzati dopo un processo di autenticazione riuscito e fungono da prova di autenticazione.

Durata della vita: A meno che non siano revocati o rotati deliberatamente dall’API provider, le chiavi API generalmente hanno una lunga durata di vita. I token, d’altro canto, spesso hanno una breve durata di vita e una data di scadenza. A seconda dell’autenticazione utilizzata, il cliente deve either re-autenticarsi o usare un token di aggiornamento per ottenere un nuovo token una volta scaduto l’vecchio.

Sicurezza: I token offrono generalmente migliori caratteristiche di sicurezza rispetto alle chiavi API. I token possono essere progettati per avere scope o permessi limitati, consentendo un controllo di accesso a granularità finiera. Possono anche essere crittografati, firmati o contenere altre dichiarazioni aggiuntive che forniscono integrità e autenticità. Questo consente una migliore autenticazione sicura e una migliore protezione dei dati sensibili.

A. API del tempo

Le API del tempo, o Applicazioni di Programmazione dell’Interfaccia, sono servizi che forniscono accesso reale-tempo ai dati meteorologici e alle previsioni.

Esempi includono

. WeatherAPI.com, Forecast, Meteostat.

B. API dei social media

Le API dei social network consentono a questi platform di integrarsi con altri fornitori di software e app.

Esempi includono

C. API del gateway di pagamento

L’interfaccia tecnologica che consente agli sviluppatori software di incorporare i servizi del gateway di pagamento nei loro app o siti web viene chiamata API del gateway di pagamento.

Esempi includono

API di Stripe. Stripe è un popolare servizio che permette ai rivenditori di accettare pagamenti online, Noodlio Pay, API di Square, PayPal, Adyen, Paybook, KeyPay, BIPS Fattura (attraverso Coinify).

D. API di Mappatura e Geolocalizzazione

L’API di Geolocalizzazione non conserva alcuna informazione ma consente invece di raccogliere dati esistenti dal dispositivo in questione. Può raccogliere dati di posizione da varie fonti, incluso l’indirizzo IP, il GPS, WiFi, Bluetooth, RFID, GSM/CDMA ID e l’input umano.

Esempi includono API geolocazione, API Mapbox, API OpenStreetMap, API MapQuest, API HERE.

IV. Conclusione e punti chiave

Attraverso questo articolo, è stato stabilito cosa sono le API, come funzionano, esempi reali, APISecurity, metodi HTTP e l’importanza delle API. È stato dedotto che le API consentono agli ingegneri software di integrare le applicazioni in ciò che viene costruito e persino di migliorarle. Durante la mia ricerca e la scrittura, ho scoperto che una questione importante è la sicurezza delle API. Se una API viene hackerata, influirà su tutte le applicazioni collegate a essa, quindi proseguirò le mie ricerche sulla sicurezza delle API.

In conclusione, pubblicherò un altro articolo in relazione a questo, poiché sarà incentrato sull’esplorazione delle API, sulla lavorazione delle API nei codici, sulle migliori pratiche delle API, sull’architettura e lo sviluppo delle API.

A. Alcuni termini chiave includono

API – Interfaccia utente applicativo

RPC – Chiamata procedurale remota

HTTP – Protocollo di trasferimento di hypertesto

B. Passaggi successivi per l’apprendimento ulteriore

Finalmente, pubblicherò un’altra articolazione su questo argomento poiché sarà incentrata sull’esplorazione delle API, sulla lavorazione delle API nei codici, sulle migliori pratiche delle API, sullo studio e sullo sviluppo delle API.

Source:
https://nechey.hashnode.dev/introduction-to-apis-a-beginners-guide-to-understanding-and-utilising-apis-in-software-engineering