Was zum Teufel ist eine API?
Warum die Verwendung von APIs in Ihrem Code wie das Spielen mit LEGO ist.
Möglicherweise haben Sie in den meisten Coding-Tutorials, die Sie gelesen haben, den Begriff „API“ gehört. Wenn Sie „API“ googeln, erhalten Sie einen großen Absatz darüber, wie es für „Application Programming Interface“ steht, und eine Erklärung zu „REST“ und „Protokollen“ usw., als ob das alles klarer machen würde.
Alles, was Sie über APIs wissen müssen, ist, dass es sich dabei um eine Liste von Funktionen handelt, mit denen Sie Aufgaben automatisieren und Daten abrufen können . Sie können zum Beispiel:
- Verwenden Sie die Gmail-API , um das Lesen und Filtern Ihres Posteingangs mit Code zu automatisieren
- Verwenden Sie die Reddit-API , um einen Bot zu erstellen , der metrische Einheiten mithilfe von Code automatisch in imperiale Einheiten umwandelt
- Verwenden Sie die Fitbit-API , um Daten von Ihrem Fitbit abzurufen und sie an eine benutzerdefinierte App auf Ihrem Telefon zu senden
Ebenso stellen APIs kleine Codeteile bereit, mit denen Sie Programme erstellen können. Sie haben Funktionen wie:
getLikeCount()createGoogleSheet()sendEmail()
Woher wissen wir, was diese „Codeteile“ sind?
Zu jeder API gehört eine Dokumentation , die alle Verwendungsmöglichkeiten auflistet, ähnlich einem LEGO-Katalog. Es zeigt Ihnen alle Dinge, die Sie mit einer API tun können, was für die Reddit-API beispielsweise „Kommentar posten“ oder „Beitrag speichern“ lauten könnte. Dokumentationen finden sich oft online auf der Website eines Unternehmens, meist auf einer versteckten Entwicklerseite. Die „ Dinge, die Sie tun können“ werden als „API-Methoden“ bezeichnet .
Einige Dokumentationen sind besser als andere , aber letztendlich handelt es sich bei der Dokumentation um eine Liste vorgefertigter Codeteile und Funktionen, die Sie in Ihrem eigenen Code verwenden können .
Die einfachste API: Abrufen Ihrer IP-Adresse
Schauen wir uns eine API an, die nur aus einem Teil besteht: der IPify-API , die Ihnen sagt, wie Ihre IP-Adresse lautet.
Eine IP-Adresse ist wie eine Telefonnummer oder Postanschrift Ihres Computers. Es sagt dem Internet, wo Sie zu finden sind. Auch Websites haben ihre eigenen IP-Adressen.
Wir werden einen Befehl an IPify.org senden und ihn nach unserer IP-Adresse fragen. Dies funktioniert sowohl unter Mac OS als auch unter Windows.
Öffnen Sie entweder das Terminal (Mac) oder die Eingabeaufforderung (Windows) und geben Sie Folgendes ein:
curl 'https://api.ipify.org?format=json'
What the command looks like in Terminal on a MacBook.
{"ip": "68.142.10.250"}
Um zu überprüfen, ob es sich um Ihre echte IP handelt, besuchen Sie WhatIsMyIPAddress.com .
JSON ist eines der beliebtesten Datenformate für moderne Web-APIs. Es bringt alles in {“key”: value}ein Format, sodass alle Daten eine Beschriftung haben. Andere APIs verwenden möglicherweise XML , das ein ähnliches <Key>value</Key>Format hat, und bei vielen APIs können Sie zwischen beiden wählen.
Dies ist der Kern vieler Web-APIs. Wir fragen eine Website nach einigen Daten und sie antwortet mit diesen Daten. In der wissenschaftlichen Forschung übliche APIs wie die NASA- , USGS- und USFDA- APIs funktionieren auf diese Weise. Wir können Daten über Weltraumsatelliten, die Höhe der Berge in den USA und die Liste der von der FDA zugelassenen Medikamente erhalten, wenn wir nur danach fragen.
Wie sieht es mit der Automatisierung der Benutzeraktivität aus?
Was ist, wenn wir nicht nur Daten von einer Website abrufen möchten? Wie wäre es mit der Entwicklung von Bots oder der Automatisierung unseres Arbeitstages?
Hier kommen kompliziertere APIs ins Spiel. Sie beinhalten immer noch einzelne Befehle, bei denen wir mit einer Website oder App sprechen und sagen: „Ich möchte diese Daten abrufen (oder diese Daten senden).“ Und die App reagiert entsprechend. Aber jetzt kombinieren wir mehrere Befehle, um anspruchsvollere Aktivitäten auszuführen.
Ein mehrstufiges Beispiel: die Reddit-API
Reddit ist das weltweit größte Online-Forum. Reddit veröffentlicht seine API online und listet in der Seitenleiste links alles auf, was Sie mit seiner API tun können.
In der Seitenleiste finden Sie die Methoden, mit denen wir unsere Freundesliste, Karma, Trophäen und mehr abrufen können. Für jede Aktion, die ein Benutzer auf der Website ausführen kann, gibt es eine entsprechende API-Methode.
Wenn wir die Reddit-API-Seite besuchen und nach unten scrollen, gibt es einen Abschnitt, Links & Kommentare , der alle normalen Benutzerinteraktionen und die entsprechenden API-Methoden zeigt. Wir könnten diese verwenden, um ein Bot-Konto oder ähnliches zu erstellen.
Wir haben alltägliche Benutzerinteraktionen wie Kommentieren ( /api/comment), Verfolgen und Speichern von Beiträgen . Die Reddit-API macht es möglich, dies mit Code zu tun. Das /api/Präfix bei allen Methoden sieht seltsam aus, aber das erklären wir gleich.
Im Gegensatz dazu verfügt die Google Search API nur über eine Methode, nämlich die Suche :
Die Google-Suche-API ist einfach, denn Google weiß, dass es für Programmierer bei der Google-Suche nur eines gibt: Suchen.
Dies ist das Ziel jeder API, alle Aktivitäten und Optionen der normalen Website oder App in solche „einzeiligen“ Code-bereiten Funktionen zusammenzufassen, die wir in Python, JavaScript, Bash, Java, R usw. verwenden können .
- Eine Website-API möchte, dass Sie normale Benutzerinteraktionen (Anmelden, Kommentieren, Suchen, Löschen von Dingen) mit so wenig Code wie möglich durchführen können
- Eine Wearable -API möchte, dass Sie mit möglichst wenig Code Daten abrufen, dem Träger eine Warnung senden oder Einstellungen am Wearable ändern können
Wie die Verwendung einer API im Code aussieht
Wie sieht das also im Code aus? Die Reddit-API gibt an, dass die Kommentarmethode aufgerufen wird /api/comment. Was bedeutet das? Wir können nicht einfach /api/commenteine Python-Datei einfügen und Schluss machen, oder? Rechts.
Es gibt einige Unterschiede zwischen der Verwendung einer API zur Kommunikation mit einer Website und der Verwendung der API eines tragbaren Geräts. Sie sind beide immer noch LEGO-ähnlich, da sie es Ihnen ermöglichen, komplexe Dinge mit ein paar Codezeilen zu erledigen, aber der Code selbst sieht ziemlich anders aus. Daher stellen wir hierfür gesonderte Beispiele zur Verfügung.
Ausführlicher: Web-APIs im Code
Wir haben gesehen, dass die Reddit-API-Methoden mit einer Reihe von Schrägstrichen aufgeführt sind:
Das sieht überhaupt nicht nach Python, JavaScript oder Code aus. Da steht /api/? Was ist das?
Dies sind eigentlich Teile von HTTP-Links , genau wie diejenigen, die Sie in Chrome oder Firefox eingeben.
Warum aber Weblinks? Fügen wir sie direkt in unseren Code ein? Ja, und das aus gutem Grund.
Wenn wir eine Web-API wie die von Reddit, Gmail oder sogar die APIs von NIH oder NASA verwenden , kommuniziert unser Code im Grunde mit einer Website. Websites links/that/look/like/thistrennen ihre Seiten und Funktionen. Google lebt unter google.com, die Suchergebnisse jedoch unter google.com/search.
Am Ende werden wir diesen Endpunkt irgendwo wie folgt in unseren Code einfügen:
google_search_api = "https://www.googleapis.com/customsearch/"
Nun kommuniziert der Code nicht wirklich mit einer Website, sondern mit einem Server (wie einer Headless-Website), aber /slashes/was die APIs betrifft, organisieren sie die Dinge genauso. Genau wie wenn Sie als normaler Benutzer von der Seite aus einen Blog auf einer Website posten website.com/post, kommuniziert Ihr Code möglicherweise mit dem Blog-Posting-Endpunkt des API-Servers unter api.website.com/postoder website.com/api/postoder so ähnlich.
Stellen Sie sich das so vor: Wenn Sie Ihren Gmail-Posteingang auf Ihrem Laptop oder Telefon überprüfen, wird Ihr Browser Folgendes tun:
- Kontaktieren Sie uns über das Internet
gmail.com - Sagen Sie
gmail.com: „Kann ich die Webseite unter abrufen/mail/inbox?“ - Anschließend sendet Gmail die Webseite für Ihren Posteingang zurück an Ihren Browser, damit Sie sie sehen können.
- Greifen Sie zu
gmail.googleapis.com - Fragen Sie
gmail.googleapis.comnach Ihrem E-Mail-Posteingang - Dann sendet die Gmail-API nur die Daten zurück und nicht die gesamte Website
Reine Daten sind Code-freundlich, und dafür sind APIs gemacht.
Beispiel: Medikamente über die openFDA-API abrufen
Hier ist ein kurzes Python-Beispiel für die Abfrage der openFDA-API der USFDA , die alle von der FDA zugelassenen Medikamente auflistet:
# 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())
Hinweis: Das obige Beispiel verwendet die beliebte requests HTTP-Bibliothek für Python.
Was ist mit APIs für Bluetooth und Wearables?
Die Verwendung der API eines tragbaren Geräts (wie Fitbit oder Apple Watch) unterscheidet sich ein wenig von der Verwendung der API einer Website, ist jedoch gleich dokumentiert. Anstelle einer „Kommentar“ -Methode könnte eine Wearable-API beispielsweise über die folgenden Methoden verfügen:
- Herzfrequenz ermitteln
- Bewegungsdaten abrufen (vom Beschleunigungsmesser und Gyroskop)
- Senden Sie dem Benutzer eine Benachrichtigung
Tragbares Beispiel: Die Fitbit-API
Anstatt eine Website nach Daten abzufragen, möchten Sie möglicherweise einen Code für ein bestimmtes Gerät wie das Fitbit erstellen .
Die Fitbit-API besteht aus mehreren Teilen . Es verfügt sogar über eine eigene Web-API.
Schauen wir uns einen der Teile der Geräte-API an .
Auf der Geräte-API-Seite zeigt die linke Seitenleiste eine Liste aller API-Teile, mit denen wir interagieren können.
Jede dieser größeren Kategorien ist eine Art Sammlung von LEGO-Teilen , über deren Teile wir mehr lesen und dann in unserem eigenen Code verwenden können. Bei den LEGO-Teilen handelt es sich um Dinge wie:
- Lesen oder Einstellen der Uhr
- Auslesen des Beschleunigungsmessers (Teil des Bewegungstrackers)
- Ablesen des Herzfrequenzmessers usw.
Es gibt viele Informationen, aber die Seite enthält ein kurzes Beispielskript und listet dann eine Reihe herzfrequenzbezogener LEGO-Teile auf, die wir in unserem eigenen Code verwenden können:
activated(sagt uns, ob der Herzfrequenzsensor eingeschaltet ist oder nicht)heartRate(teilt uns die aktuelle Herzfrequenz mit)onactivate(eine Funktion, mit der wir dem Fitbit mitteilen können, was es tun soll, sobald der Herzfrequenzsensor aktiviert ist)
Im Pseudocode bedeutet das oben Gesagte:
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)
}
Wenn Sie bei der Verwendung einer API nicht weiterkommen, verfügt das Unternehmen, das sie erstellt hat, normalerweise über eine Online-Dokumentation, nach der Sie bei Google suchen können. (Beispiel: Bei der Suche nach „Fitbit API“ wird die tatsächliche Fitbit API als oberstes Suchergebnis angezeigt.) Andernfalls können Sie sich direkt an das Unternehmen wenden und fragen, ob es über API-Dokumentation verfügt, die es senden kann.
In manchen Fällen kann die API-Dokumentation wirklich enttäuschend sein , was zu Frustration in der Entwickler-Community führt. Aber das ist eine Gelegenheit, einen Beitrag zu leisten und die Lücken zu schließen oder Ihr eigenes, besseres Produkt zu entwickeln.
Zusammenfassung
Ingenieure schreiben APIs in der Hoffnung, dass Sie ihre Apps, Datensätze und Wearables entwickeln und verwenden. Nachdem Sie nun APIs verstanden haben, sehen Sie sich zum Einstieg diese beliebten APIs an . In den meisten Fällen verfügen Ihre bevorzugten Technologien und Apps alle über APIs, die Sie in Ihrem nächsten Projekt verwenden können.
Wenn Sie Fragen oder Feedback haben, senden Sie uns eine E-Mail an [email protected] oder schreiben Sie uns eine Nachricht auf Instagram (@protobioengineering) . Danke fürs Lesen.
verwandte Links
- GitHub für Biologen
- Dataverse API: Open-Source-Forschungsdaten und -Software
- Postman: APIs erstellen und testen

![Was ist überhaupt eine verknüpfte Liste? [Teil 1]](https://post.nghiatu.com/assets/images/m/max/724/1*Xokk6XOjWyIGCBujkJsCzQ.jpeg)



































