Che diamine è un'API?
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. 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
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".
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.
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.
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.
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 :
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
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.
Pensala in questo modo: quando controlli la posta in arrivo di Gmail sul tuo laptop o telefono, il tuo browser:
- Raggiungere attraverso Internet per
gmail.com - Dì a
gmail.com, "Posso ottenere la pagina web sotto/mail/inbox?" - Quindi Gmail invia la pagina web per la tua casella di posta al tuo browser, in modo che tu possa vederla.
- Raggiungi
gmail.googleapis.com - Richiedi
gmail.googleapis.comla tua casella di posta elettronica - 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 .
Ci sono più parti nell'API Fitbit . Ha persino una propria 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)
}
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

![Che cos'è un elenco collegato, comunque? [Parte 1]](https://post.nghiatu.com/assets/images/m/max/724/1*Xokk6XOjWyIGCBujkJsCzQ.jpeg)



































