Was ist eine API? Auf Englisch bitte.

Bevor ich Softwareentwicklung lernte, klang API wie eine Art Bier.

Heute verwende ich den Begriff so oft, dass ich kürzlich versucht habe, eine API an einer Bar zu bestellen.

Die Antwort des Barkeepers war, eine 404: Ressource nicht zu werfen.

Ich treffe viele Leute, sowohl in der Technik als auch anderswo, die eine ziemlich vage oder falsche Vorstellung davon haben, was dieser ziemlich häufige Begriff bedeutet.

Technisch steht API für Application Programming Interface . Irgendwann haben die meisten großen Unternehmen APIs für ihre Kunden oder für den internen Gebrauch erstellt.

Aber wie erklären Sie API im Klartext? Und gibt es eine breitere Bedeutung als die, die in Entwicklung und Geschäft verwendet wird? Lassen Sie uns zunächst zurückziehen und uns ansehen, wie das Web selbst funktioniert.

WWW und Remote-Server

Wenn ich an das Web denke, stelle ich mir ein großes Netzwerk verbundener Server vor.

Jede Seite im Internet wird irgendwo auf einem Remote-Server gespeichert. Ein Remote-Server ist schließlich nicht so mystisch - er ist nur ein Teil eines entfernt gelegenen Computers, der für die Verarbeitung von Anforderungen optimiert ist.

Um die Dinge ins rechte Licht zu rücken, können Sie einen Server auf Ihrem Laptop hochfahren, der eine ganze Website für das Web bereitstellen kann (tatsächlich verwenden Ingenieure einen lokalen Server, um Websites zu entwickeln, bevor sie für die Öffentlichkeit freigegeben werden).

Wenn Sie www.facebook.com in Ihren Browser eingeben, wird eine Anfrage an den Remote-Server von Facebook gesendet. Sobald Ihr Browser die Antwort erhält, interpretiert er den Code und zeigt die Seite an.

Für den Browser, auch als Client bezeichnet , ist der Server von Facebook eine API. Dies bedeutet, dass Sie jedes Mal, wenn Sie eine Seite im Web besuchen, mit der API eines Remoteservers interagieren.

Eine API ist nicht mit dem Remote-Server identisch, sondern der Teil des Servers, der Anforderungen empfängt und Antworten sendet .

APIs als Möglichkeit, Ihre Kunden zu bedienen

Sie haben wahrscheinlich von Unternehmen gehört, die APIs als Produkte verpacken. Beispielsweise verkauft Weather Underground den Zugriff auf seine Wetterdaten-API.

Beispielszenario: Auf der Website Ihres Kleinunternehmens wird ein Formular verwendet, mit dem Kunden für Termine angemeldet werden. Sie möchten Ihren Kunden die Möglichkeit geben, automatisch ein Google-Kalenderereignis mit den Details für diesen Termin zu erstellen.

API-Verwendung: Die Idee ist, dass der Server Ihrer Website direkt mit dem Server von Google kommuniziert, um ein Ereignis mit den angegebenen Details zu erstellen. Ihr Server empfängt dann die Antwort von Google, verarbeitet sie und sendet relevante Informationen an den Browser zurück, z. B. eine Bestätigungsnachricht an den Nutzer.

Alternativ kann Ihr Browser häufig eine API-Anfrage direkt an den Server von Google senden, wobei Ihr Server umgangen wird.

Inwiefern unterscheidet sich die API dieses Google Kalenders von der API eines anderen Remote-Servers?

In technischer Hinsicht besteht der Unterschied im Format der Anfrage und der Antwort.

Um die gesamte Webseite zu rendern, erwartet Ihr Browser eine Antwort in HTML, die Präsentationscode enthält, während der API-Aufruf von Google Kalender nur die Daten zurückgibt - wahrscheinlich in einem Format wie JSON .

Wenn der Server Ihrer Website die API-Anforderung stellt, ist der Server Ihrer Website der Client (ähnlich wie Ihr Browser der Client ist, wenn Sie ihn zum Navigieren zu einer Website verwenden).

Aus Sicht Ihrer Benutzer können sie mit APIs die Aktion ausführen, ohne Ihre Website zu verlassen.

Die meisten modernen Websites verwenden mindestens einige APIs von Drittanbietern.

Viele Probleme haben bereits eine Lösung von Drittanbietern, sei es in Form einer Bibliothek oder eines Dienstes. Es ist oft einfacher und zuverlässiger, eine vorhandene Lösung zu verwenden.

Es ist nicht ungewöhnlich, dass Entwicklungsteams ihre Anwendung in mehrere Server aufteilen, die über APIs miteinander kommunizieren. Die Server, die Hilfsfunktionen für den Hauptanwendungsserver ausführen, werden üblicherweise als Microservices bezeichnet .

Zusammenfassend lässt sich sagen, dass ein Unternehmen, das seinen Kunden eine API anbietet, lediglich eine Reihe dedizierter URLs erstellt hat, die reine Datenantworten zurückgeben. Dies bedeutet, dass die Antworten nicht den Präsentationsaufwand enthalten, den Sie von einem erwarten würden grafische Benutzeroberfläche wie eine Website .

Können Sie diese Anfragen mit Ihrem Browser stellen? Oft ja. Da die eigentliche HTTP-Übertragung im Text erfolgt, wird Ihr Browser immer das Beste tun, um die Antwort anzuzeigen.

Sie können beispielsweise direkt mit Ihrem Browser auf die API von GitHub zugreifen, ohne ein Zugriffstoken zu benötigen. Hier ist die JSON-Antwort, die Sie erhalten, wenn Sie die API-Route eines GitHub-Benutzers in Ihrem Browser (//api.github.com/users/petrgazarov) besuchen:

{ "login": "petrgazarov", "id": 5581195, "avatar_url": "//avatars.githubusercontent.com/u/5581195?v=3", "gravatar_id": "", "url": "//api.github.com/users/petrgazarov", "html_url": "//github.com/petrgazarov", "followers_url": "//api.github.com/users/petrgazarov/followers", "following_url": "//api.github.com/users/petrgazarov/following{/other_user}", "gists_url": "//api.github.com/users/petrgazarov/gists{/gist_id}", "starred_url": "//api.github.com/users/petrgazarov/starred{/owner}{/repo}", "subscriptions_url": "//api.github.com/users/petrgazarov/subscriptions", "organizations_url": "//api.github.com/users/petrgazarov/orgs", "repos_url": "//api.github.com/users/petrgazarov/repos", "events_url": "//api.github.com/users/petrgazarov/events{/privacy}", "received_events_url": "//api.github.com/users/petrgazarov/received_events", "type": "User", "site_admin": false, "name": "Petr Gazarov", "company": "PolicyGenius", "blog": "//petrgazarov.com/", "location": "NYC", "email": "[email protected]", "hireable": null, "bio": null, "public_repos": 23, "public_gists": 0, "followers": 7, "following": 14, "created_at": "2013-10-01T00:33:23Z", "updated_at": "2016-08-02T05:44:01Z"}

Der Browser scheint eine JSON-Antwort problemlos angezeigt zu haben. Eine solche JSON-Antwort kann in Ihrem Code verwendet werden. Es ist einfach, Daten aus diesem Text zu extrahieren. Dann können Sie mit den Daten machen, was Sie wollen.

A steht für "Bewerbung"

Lassen Sie uns zum Abschluss noch ein paar Beispiele für APIs hinzufügen.

"Anwendung" kann sich auf viele Dinge beziehen. Hier sind einige davon im Zusammenhang mit API:

  1. Eine Software mit einer bestimmten Funktion.
  2. Der gesamte Server, die gesamte App oder nur ein kleiner Teil einer App.

Grundsätzlich kann jede Software, die deutlich von ihrer Umgebung getrennt werden kann, ein „A“ in der API sein und wird wahrscheinlich auch eine Art API haben.

Angenommen, Sie verwenden eine Bibliothek eines Drittanbieters in Ihrem Code. Sobald eine Bibliothek in Ihren Code integriert ist, wird sie Teil Ihrer gesamten App. Da es sich um eine eigenständige Software handelt, verfügt die Bibliothek wahrscheinlich über eine API, mit der sie mit dem Rest Ihres Codes interagieren kann.

Hier ist ein weiteres Beispiel: In Object Oriented Design ist Code in Objekten organisiert. In Ihrer Anwendung sind möglicherweise Hunderte von Objekten definiert, die miteinander interagieren können.

Jedes Objekt verfügt über eine API - eine Reihe öffentlicher Methoden und Eigenschaften, mit denen es mit anderen Objekten in Ihrer Anwendung interagiert.

An object may also have inner logic that is private, meaning that it’shiddenfrom the outside scope (and not an API).

From what we have covered, I hope you take away the broader meaning of API as well as the more common uses of the term today.

Interesting Resources (stuff that I left out but is still very cool):

A great youtube video on DNS (Domain Name System)

HTTP protocol basics

An Awesome Khan Academy video on Object Oriented Design Principles