Che diamine è un'API?

Mar 20 2023
Perché usare le API nel tuo codice è come giocare con i LEGO. Potresti aver sentito il termine "API" nella maggior parte dei tutorial di codifica che hai letto.

Perché usare le API nel tuo codice è come giocare con i LEGO.

Foto di Xavi Cabrera su Unsplash

Potresti aver sentito il termine "API" nella maggior parte dei tutorial di codifica che hai letto. Se cerchi "API" su Google, otterrai un lungo paragrafo su come sta per "Application Programming Interface" e una spiegazione su "REST" e "protocolli" e così via, come se questo lo rendesse più chiaro.

Tutto quello che devi sapere sulle API è che sono un elenco di funzioni che puoi utilizzare per automatizzare le attività e ottenere dati . Ad esempio, puoi:

  • Usa l' API di Gmail per automatizzare la lettura e il filtraggio della tua casella di posta con il codice
  • Usa l' API Reddit per creare un bot che converte automaticamente le unità metriche in imperiali con il codice
  • Usa l' API Fitbit per acquisire i dati dal tuo Fitbit e inviarli a un'app personalizzata sul tuo smartphone
  • Come potremmo utilizzare un'API per un forum come Reddit. Foto originale di Xavi Cabrera su Unsplash
Sito e catalogo Pick a Brick di LEGO.

Allo stesso modo, le API forniscono piccoli pezzi di codice che ti consentono di creare programmi. Hanno funzioni come:

  • getLikeCount()
  • createGoogleSheet()
  • sendEmail()

Come facciamo a sapere quali sono questi "pezzi di codice"?

Ogni API viene fornita con una documentazione che elenca tutti i modi in cui puoi utilizzarla, un po' come un catalogo LEGO. Ti mostra tutte le cose che puoi fare con un'API, che per l' API di Reddit potrebbe essere "pubblica un commento" o "salva un post". La documentazione si trova spesso online sul sito Web di un'azienda, di solito su una pagina nascosta per sviluppatori. Le " cose ​​che puoi fare" sono indicate come "metodi API".

L'API Slack ha una documentazione chiara.

Alcune documentazioni sono migliori di altre , ma la documentazione è in ultima analisi un elenco di parti di codice e funzioni predefinite che è possibile utilizzare nel proprio codice .

L'API più semplice: ottenere il tuo indirizzo IP

Diamo un'occhiata a un'API che ha solo un pezzo: l'API IPify , che ti dice qual è il tuo indirizzo IP.

Un indirizzo IP è come un numero di telefono o un indirizzo postale per il tuo computer. Dice a Internet dove trovarti. Anche i siti Web hanno i propri indirizzi IP.

Invieremo un comando a IPify.org e gli chiederemo qual è il nostro indirizzo IP. Funziona sia su Mac OS che su Windows.

Apri Terminale (Mac) o Prompt dei comandi (Windows) e digita quanto segue:

curl 'https://api.ipify.org?format=json'

      
                
What the command looks like in Terminal on a MacBook.

{"ip": "68.142.10.250"}

Per verificare che questo sia il tuo vero IP, visita WhatIsMyIPAddress.com .

JSON è uno dei formati di dati più diffusi per le moderne API Web. Mette tutto in {“key”: value}formato in modo che tutti i dati abbiano un'etichetta. Altre API possono utilizzare XML , che ha un <Key>value</Key>formato simile, e molte API ti consentono di scegliere tra i due.

Questo è il succo di molte API web. Chiediamo a un sito web alcuni dati e lui risponde con quei dati. Le API comuni nella ricerca scientifica, come le API della NASA , USGS e USFDA , funzionano in questo modo. Possiamo ottenere dati sui satelliti spaziali, l'elevazione delle montagne negli Stati Uniti e l'elenco dei farmaci approvati dalla FDA se lo chiediamo.

Che dire dell'automazione dell'attività dell'utente?

E se non volessimo semplicemente prendere i dati da un sito web? Che ne dici di creare robot o automatizzare la nostra giornata lavorativa?

È qui che entrano in gioco le API più complicate. Coinvolgono ancora comandi singolari in cui parliamo con un sito Web o un'app e diciamo: "Voglio ottenere questi dati (o inviare questi dati)". E l'app risponde di conseguenza. Ma ora stiamo mettendo insieme più comandi per eseguire attività più sofisticate.

Foto di Aedrian su Unsplash

Un esempio in più passaggi: l'API di Reddit

Reddit è il forum online più grande del mondo. Reddit pubblica la sua API online ed elenca tutto ciò che puoi fare con la sua API nella barra laterale a sinistra.

Una panoramica dell'API di Reddit. I siti Web più popolari avranno una pagina API (un po 'nascosta).

Nella barra laterale ci sono i metodi che possiamo usare per ottenere la nostra lista di amici, karma, trofei e altro. Ogni azione che un utente può eseguire sul sito Web ha il proprio metodo API corrispondente.

Se visitiamo la pagina dell'API di Reddit e scorriamo verso il basso, c'è una sezione, link e commenti , che mostra tutte le normali interazioni dell'utente e i metodi API corrispondenti. Potremmo usarli per creare un account bot o qualcosa di simile.

Un elenco di cose che possiamo fare in modo automatizzato se utilizziamo l'API di Reddit.

Abbiamo interazioni quotidiane con gli utenti come commentare ( /api/comment), seguire e salvare post . L'API Reddit rende possibile farlo con il codice. Il /api/prefisso su tutti i metodi sembra strano, ma lo spiegheremo tra un minuto.

L'API di ricerca di Google , al contrario, ha un solo metodo ed è quello di cercare :

Una spiegazione del metodo "elenco" (fondamentalmente "ricerca") dall'API di ricerca di Google.

L'API di ricerca di Google è semplice, perché Google sa che c'è solo una cosa che i programmatori si preoccupano di fare con la ricerca di Google: la ricerca.

Questo è l'obiettivo di ogni API, ridurre tutte le attività e le opzioni del normale sito Web o app in questo tipo di funzioni pronte per il codice "one liner" che possiamo utilizzare da Python, JavaScript, Bash, Java, R, ecc. .

  • Un'API del sito Web vuole che tu sia in grado di eseguire le normali interazioni dell'utente (accesso, commenti, ricerche, eliminazione di cose) con il minor codice possibile
  • Un'API indossabile vuole che tu sia in grado di acquisire dati, inviare un avviso a chi lo indossa o modificare le impostazioni sul dispositivo indossabile con il minor codice possibile
Se questa macchina avesse un'API, avrebbe un attributo "tyre" e un metodo "drive()". Foto di Eric & Niklas su Unsplash

Come si presenta l'utilizzo di un'API nel codice

Allora, che aspetto ha questo nel codice? L'API di Reddit dice che il metodo di commento si chiama /api/comment. Che cosa significa? Non possiamo semplicemente inserire /api/commentun file Python e chiamarlo un giorno, giusto? Giusto.

Esistono alcune differenze tra l'utilizzo di un'API per comunicare con un sito Web e l'utilizzo dell'API di un dispositivo indossabile. Sono entrambi ancora simili ai LEGO in quanto ti consentono di fare cose complesse con poche righe di codice, ma il codice stesso sembra piuttosto diverso. Pertanto, forniremo esempi separati per loro.

Più approfondito: API Web nel codice

Abbiamo visto che i metodi dell'API di Reddit sono elencati con una serie di barre:

Non sembra affatto Python o JavaScript o codice. Dice /api/? Che cos'è?

Questi sono in realtà parti di collegamenti HTTP , proprio come quelli digitati in Chrome o Firefox.

Perché i collegamenti web però? Li inseriamo direttamente nel nostro codice? Sì, e per una buona ragione.

Quando utilizziamo un'API Web, come quella di Reddit, Gmail o persino le API di NIH o NASA , il nostro codice sta fondamentalmente parlando con un sito web. I siti Web utilizzano links/that/look/like/thisper separare le loro pagine e funzioni. Google vive a google.com, ma sono i risultati di ricerca a google.com/search.

Finiremo per inserire quell'endpoint nel nostro codice da qualche parte in questo modo:

google_search_api = "https://www.googleapis.com/customsearch/"

Ora, il codice non sta realmente parlando con un sito Web ma un server (come un sito Web senza testa), ma organizzano le cose allo stesso modo con /slashes/, per quanto riguarda le API. Proprio come quando pubblichi un blog come utente normale su un sito Web dalla pagina website.com/post, il tuo codice potrebbe comunicare con l'endpoint di pubblicazione del blog del server API in api.website.com/posto website.com/api/posto simili.

Foto di Caspar Camille Rubin su Unsplash

Pensala in questo modo: quando controlli la posta in arrivo di Gmail sul tuo laptop o telefono, il tuo browser:

  1. Raggiungere attraverso Internet pergmail.com
  2. Dì a gmail.com, "Posso ottenere la pagina web sotto /mail/inbox?"
  3. Quindi Gmail invia la pagina web per la tua casella di posta al tuo browser, in modo che tu possa vederla.
  1. Raggiungigmail.googleapis.com
  2. Richiedi gmail.googleapis.comla tua casella di posta elettronica
  3. Quindi l'API di Gmail restituirà solo i dati anziché l'intero sito web

I dati puri sono compatibili con il codice ed è per questo che sono create le API.

Esempio: ottenere farmaci dall'API openFDA

Ecco un breve esempio Python per interrogare l' API openFDA dell'USFDA , che elenca tutti i farmaci approvati dalla FDA:

# import an HTTP library
import requests

# Tell "requests" to request data from the openFDA "Drugs" endpoint
drugs_http_endpoint = "https://api.fda.gov/drug/label.json?limit=100"
drugs = requests.get(drugs_http_endpoint)

# Print all the data that we got from USFDA about drugs
print(drugs.json())

Nota: l'esempio sopra utilizza la popolare requests libreria HTTP per Python.

E le API per Bluetooth e dispositivi indossabili?

L'utilizzo dell'API di un dispositivo indossabile (come Fitbit o Apple Watch) è leggermente diverso dall'utilizzo dell'API di un sito Web, ma sono documentati allo stesso modo. Ad esempio, invece di un metodo di "commento" , un'API indossabile potrebbe avere i seguenti metodi:

  • ottenere la frequenza cardiaca
  • ottenere dati di movimento (dall'accelerometro e dal giroscopio)
  • inviare all'utente un avviso

Esempio di indossabile: l'API Fitbit

Invece di interrogare alcuni siti Web per i dati, potresti voler codificare per un dispositivo specifico, come Fitbit .

I Fitbit sono dispositivi indossabili che monitorano il tuo allenamento, la frequenza cardiaca e altro ancora. Foto di Shane su Unsplash

Ci sono più parti nell'API Fitbit . Ha persino una propria API Web.

L'API Fitbit ha diverse parti: l'API del dispositivo, l'API delle impostazioni, l'API Companion e l'API Web.

Diamo un'occhiata a una delle parti dell'API del dispositivo .

Nella pagina Device API , la barra laterale sinistra mostra un elenco di tutti i componenti API con cui possiamo interagire.

Ognuna di queste categorie più grandi è una sorta di raccolta di pezzi LEGO , di cui possiamo leggere di più e poi usarli nel nostro codice. I pezzi LEGO sono cose come:

  • leggere o regolare l'orologio
  • leggere l'accelerometro (parte del rilevatore di movimento)
  • lettura del cardiofrequenzimetro , ecc.

Ci sono molte informazioni, ma la pagina ha un breve script di esempio e quindi elenca una serie di pezzi LEGO relativi alla frequenza cardiaca che possiamo usare nel nostro codice:

  • activated(ci dice se il sensore di frequenza cardiaca è attivo o meno)
  • heartRate(ci dice la frequenza cardiaca attuale)
  • onactivate(una funzione che possiamo usare per dire al Fitbit cosa fare non appena si attiva il sensore di frequenza cardiaca)

In pseudocodice, quanto sopra significa:

import HeartRateSensor code from Fitbit's API

if HeartRateSensor was imported {
    hrm = the HeartRateSensor
    
    Listen for heart rate sensor to send data, then print it.

    Start the heart rate sensor (which will then start the above "Listen" code)
}

Questo ragazzo sa come leggere la documentazione dell'API. Foto di Kelly Sikkema su Unsplash

Se rimani bloccato durante l'utilizzo di un'API, la società che l'ha creata avrà in genere documentazione online che puoi cercare su Google. (Esempio: la ricerca di "Fitbit API" mostrerà l'effettiva API Fitbit come primo risultato di ricerca.) In caso contrario, puoi contattare direttamente l'azienda per chiedere se dispone della documentazione API da inviare.

In alcuni casi, la documentazione dell'API può essere davvero deludente , causando frustrazione nella comunità degli sviluppatori. Ma questa è un'opportunità per contribuire e colmare le lacune o creare il tuo prodotto migliore.

Riepilogo

Gli ingegneri scrivono API nella speranza che tu sviluppi e utilizzi le loro app, set di dati e dispositivi indossabili. Ora che conosci le API, dai un'occhiata a queste popolari API per iniziare . Il più delle volte, la tua tecnologia e le tue app preferite dispongono tutte di API che puoi utilizzare nel tuo prossimo progetto.

Se hai domande o feedback, scrivici a [email protected] o inviaci un messaggio su Instagram (@protobioengineering) . Grazie per aver letto.

Link correlati

  • GitHub per i biologi
  • API Dataverse: dati e software di ricerca open source
  • Postman: creazione e test delle API
  • Foto di Phil Hearing su Unsplash