Was ist eine API? Anwendungsprogrammierschnittstellen erklärt

API steht für Application Programming Interface, ein Konzept, das von Befehlszeilentools über Java-Unternehmenscode bis hin zu Ruby on Rails-Webanwendungen überall gilt. Eine API ist eine Möglichkeit, programmgesteuert mit einer separaten Softwarekomponente oder -ressource zu interagieren.

Wenn Sie nicht jede einzelne Codezeile von Grund auf neu schreiben, interagieren Sie mit externen Softwarekomponenten, von denen jede über eine eigene API verfügt. Selbst wenn Sie etwas komplett neu schreiben, verfügt eine gut gestaltete Softwareanwendung über interne APIs, mit denen Sie Code organisieren und Komponenten wiederverwendbarer machen können. Und es gibt zahlreiche öffentliche APIs, mit denen Sie auf Funktionen zugreifen können, die an anderer Stelle im Web entwickelt wurden.

Was ist eine API?

Eine API ist definiert als eine Spezifikation möglicher Interaktionen mit einer Softwarekomponente. Was bedeutet das genau? Stellen Sie sich vor, ein Auto wäre eine Softwarekomponente. Die API würde Informationen darüber enthalten, was sie tun kann - beschleunigen, bremsen, das Radio einschalten usw. Sie würde auch Informationen darüber enthalten, wie Sie sie dazu bringen könnten, diese Dinge zu tun. Zum Beschleunigen treten Sie beispielsweise auf das Gaspedal und drücken.

Die API muss nicht erklären, was im Motor passiert, wenn Sie das Gaspedal betätigen. Wenn Sie also gelernt haben, ein Auto mit Verbrennungsmotor zu fahren, können Sie sich hinter das Steuer eines Elektroautos setzen, ohne ganz neue Fähigkeiten erlernen zu müssen. Das , was und wie Informationen kommen zusammen in der API - Definition , die aus dem Auto selbst abstrakt und getrennt ist.

Beachten Sie, dass der Name einiger APIs häufig sowohl für die Spezifikation der Interaktionen als auch für die tatsächliche Softwarekomponente verwendet wird, mit der Sie interagieren. Der Ausdruck „Twitter-API“ bezieht sich beispielsweise nicht nur auf die Regeln für die programmgesteuerte Interaktion mit Twitter, sondern bedeutet im Allgemeinen auch das, mit dem Sie interagieren, wie in „Wir analysieren die Tweets, von denen wir stammen die Twitter-API. "

API als Abstraktionsschicht

Wenn es um Software geht, sind APIs buchstäblich überall. APIs gehen Hand in Hand mit einem der grundlegendsten Konzepte in der Informatik: Abstraktion. Abstraktion ist nur eine Möglichkeit, die Komplexität eines Systems so zu organisieren, dass komplizierte Aktionen auf einfache Weise behandelt werden können. Stellen Sie sich diese Abstraktion wie die Amazon Dash Buttons vor, die batteriebetriebenen Druckknopfplatinen, mit denen Sie Heftklammern bei Amazon bestellen können. So sehen sie aus:

Sie bestellen einen Dash Button bei Amazon und verwenden eine App auf Ihrem Smartphone, um ihn mit Ihrem Wi-Fi-Netzwerk, Ihrem Amazon-Konto und einem Produkt, beispielsweise Ihrer Lieblingsmarke von Papierhandtüchern, zu verknüpfen. Wenn Sie dann weitere Papiertücher bestellen möchten, drücken Sie einfach den Knopf. Die Dash-Schaltfläche stellt eine Verbindung zum Internet her und sendet eine Nachricht, um eine Bestellung in Ihrem Konto aufzugeben. Einige Tage später kommen Papiertücher vor Ihrer Haustür an.

Wie eine API ist der Dash Button eine wunderbar einfache Oberfläche, die alle Arten von Komplexität hinter den Kulissen verbirgt. Die ID des von Ihnen bestellten Produkts muss aus einer Datenbank abgerufen werden. Ihre Lieferadresse muss von Ihrem Konto abgebucht werden. Das nächstgelegene Fulfillment-Center, in dem sich Ihre Papiertücher befinden, muss ermittelt und dann benachrichtigt werden, um einen Artikel aus dem verfügbaren Bestand zu entfernen und zu verpacken. Schließlich muss das Paket zusammen mit anderen Paketen durch eine Kombination aus Flugzeugen, Lastwagen und Lieferwagen geleitet werden, um sicherzustellen, dass alle Pakete ihre Ziele effizient erreichen.

Stellen Sie sich nun vor, Sie müssten all diese Dinge als Kunde koordinieren. Sie würden niemals Papiertücher bestellen, weil es zu kompliziert und zeitaufwändig ist und Sie bessere Dinge zu tun haben. Zum Glück ist die ganze Tortur von dir weg abstrahiert. Es gibt eine lange, miteinander verbundene Kette von Computersystemen und menschlichen Prozessen, die diese Papiertücher vor Ihrer Haustür erscheinen lassen, aber alles, woran Sie denken müssen, ist ein Knopfdruck.

So sehen APIs für Programmierer aus. Sie sind sehr komplex und definieren eine relativ einfache Reihe von Interaktionen, die Sie verwenden können, anstatt alles selbst zu erledigen. In jedem Softwareprojekt verwenden Sie wahrscheinlich zehn, wenn nicht Hunderte von APIs direkt, und jede dieser APIs basiert auf anderen APIs und so weiter.

Öffentliche APIs und API-Integration

APIs sind ein langjähriges Konzept in der Computerprogrammierung und gehören seit Jahren zu den Toolsets der Entwickler. Traditionell wurden APIs verwendet, um Codekomponenten zu verbinden, die auf demselben Computer ausgeführt werden. Mit dem Aufkommen der allgegenwärtigen Vernetzung sind immer mehr öffentliche APIs, manchmal auch offene APIs genannt, verfügbar geworden. Öffentliche APIs sind nach außen gerichtet und über das Internet zugänglich. So können Sie Code schreiben, der online mit dem Code anderer Anbieter interagiert. Dieser Prozess wird als API-Integration bezeichnet.

Mit diesen Arten von Code-Mashups können Benutzer Funktionen verschiedener Anbieter auf ihren eigenen Systemen kombinieren. Wenn Sie beispielsweise die Marketing-Automatisierungssoftware Marketo verwenden, können Sie Ihre Daten dort mit der Salesforce CRM-Funktionalität synchronisieren.

"Offen" oder "öffentlich" sollte in diesem Zusammenhang nicht als "kostenlos" interpretiert werden. Sie müssen weiterhin Marketo- und Salesforce-Kunde sein, damit dies funktioniert. Die Verfügbarkeit dieser APIs macht die Integration jedoch zu einem viel einfacheren Prozess als sonst. (( hat eine große Liste von öffentlichen APIs, die Sie kennen sollten.)

Webdienste und APIs

Sie erinnern sich vielleicht an den Begriff Web Services aus den frühen 00ern und denken, dass die Idee einer offenen API ziemlich ähnlich klingt. Tatsächlich handelt es sich bei einem Webdienst um eine bestimmte Art von offener API, die eine ziemlich strenge Reihe von Spezifikationen erfüllt, einschließlich der Angaben in WSDL (Web Services Description Language), einer XML-Variante.

Webdienste sollten als Teil einer serviceorientierten Architektur (SOA) verwendet werden. Wie der Blog von Nordic APIs erklärt, hat dies Webdiensten einen schlechten Ruf verliehen, da SOAs ihr Potenzial nie voll ausgeschöpft haben. Fortschritte bei den für die Service-to-Service-Kommunikation verwendeten Techniken - insbesondere leichtere und flexiblere REST - haben auch Webdienste in der Welt der öffentlichen APIs etwas hinter sich gelassen.

REST-APIs

Webdienste wurden ursprünglich für die Kommunikation mit SOAP (Simple Object Access Protocol) entwickelt, einem Messaging-Protokoll, das XML-Dokumente über HTTP sendet. Heutzutage verwenden die meisten webbasierten APIs jedoch REST (Representational State Transfer) als Architekturstil.

REST wurde von Roy Fielding in seiner Dissertation im Jahr 2000 offiziell vorgestellt. Es handelt sich um eine Reihe von Architekturkomponenten, Entwurfsprinzipien und Interaktionen, die zum Erstellen verteilter Systeme verwendet werden, an denen Medien jeglicher Art (Text, Video usw.) beteiligt sind. Im Kern ist REST ein Stil von Gebäudesystemen, der eine flexible Kommunikation und Anzeige von Informationen über das Web ermöglicht und gleichzeitig die Struktur bereitstellt, die zum einfachen Erstellen von Allzweckkomponenten erforderlich ist.

In einer REST-API kann eine Ressource so ziemlich alles sein, aber Beispiele sind ein Benutzer, eine Liste von Tweets und die aktuellen Ergebnisse einer Suche nach Tweets. Jede dieser Ressourcen kann unter einer Ressourcenkennung adressiert werden , bei der es sich bei webbasierten REST-APIs normalerweise um eine URL handelt, z. B. //api.twitter.com/1.1/users/show?screen_name=twitterdev. Wenn eine Anwendung eine Ressource unter Verwendung des Bezeichners anfordert, liefert die API die aktuelle Darstellung dieser Ressource an die Anwendung in einem Format, das die Anwendung verwenden kann, z. B. ein JPEG-Bild, eine HTML-Seite oder JSON.

Eines der großen Unterscheidungsmerkmale von REST besteht darin, dass Daten an die anfordernde Anwendung gesendet werden. Dies bietet zwar eine große Flexibilität, sodass die Anwendung mit den Daten tun kann, was sie will, geht jedoch zu Lasten der Effizienz. Das Senden von Daten zur Verarbeitung über das Web ist im Vergleich zur Verarbeitung, bei der sich die Daten befinden, und zum anschließenden Senden der Ergebnisse recht langsam.

Das Problem beim „effizienten“ Ansatz besteht natürlich darin, dass Systeme, auf denen die Daten gehostet werden, im Voraus wissen müssen, welche Anwendungen damit umgehen möchten. Um eine API zu erstellen, die allgemeine Benutzerfreundlichkeit und Flexibilität bietet, ist REST der richtige Weg.

API-Beispiele

Es gibt viele öffentliche APIs, mit denen Sie interagieren können, viele von Branchengrößen. Die Möglichkeit, programmgesteuert über eine API auf den Code einiger Plattformunternehmen zuzugreifen, macht sie im Wesentlichen zu einer Plattform. Einige prominente API-Beispiele sind:

  • Google APIs , mit denen Sie Ihren Code mit allen Google-Diensten verbinden können, von Maps bis Translate. APIs sind für Google so wichtig, dass sie Apigee, eine führende API-Verwaltungsplattform, erworben haben.
  • Facebook-APIs , mit denen Sie programmgesteuert auf die Social Graph- und Marketing-Tools von Facebook zugreifen können. (Das Unternehmen hat im Fallout von Cambridge Analytica und anderen Skandalen eingeschränkt, auf welche Benutzerdaten Sie über diese APIs zugreifen können.)

Um wirklich einen Eindruck von der Funktionsweise von APIs zu bekommen, lassen Sie uns zwei vertiefen: die Java-API, mit der Java-Entwickler mit der Java-Plattform interagieren, und die Twitter-API, eine öffentliche API, mit der Sie mit sozialen Netzwerken interagieren würden Netzwerkdienst.

Die Java-API

Die Java-API ist eine Bibliothek von Softwarekomponenten, die jedem zur Verfügung steht, der das Java Development Kit installiert hat. Diese Komponenten implementieren allgemeine Aufgaben und steigern im Allgemeinen die Produktivität, da Programmierer nicht jedes Mal von vorne anfangen müssen. Eine der grundlegenden Komponenten, die in Software verwendet werden, ist eine sogenannte Liste, die erwartungsgemäß eine Liste von Elementen verfolgt. Die Java-API definiert, was Sie mit einer Liste tun können: Elemente hinzufügen, die Liste sortieren, feststellen, ob sich ein Element in der Liste befindet usw. Außerdem wird festgelegt, wie diese Aktionen ausgeführt werden sollen. Um die Liste zu sortieren, müssen Sie angeben, wie die Liste sortiert werden soll: alphabetisch, numerisch absteigend, hellste bis matteste Farbe usw.

Die Twitter-API

Die Twitter-API ist eine webbasierte JSON-API, mit der Entwickler programmgesteuert mit Twitter-Daten interagieren können. Im Gegensatz zur Java-API, die im Java Development Kit enthalten ist, ist die Twitter-API eine webbasierte API. Der Zugriff muss erfolgen, indem über das Internet Anfragen an von Twitter gehostete Dienste gestellt werden.

Mit einer webbasierten API wie der von Twitter sendet Ihre Anwendung wie ein Webbrowser eine HTTP-Anfrage. Anstatt die Antwort als Webseite zu liefern, wird sie zum besseren Verständnis in einem Format zurückgegeben, das von Anwendungen leicht analysiert werden kann. Zu diesem Zweck gibt es verschiedene Formate, und Twitter verwendet ein beliebtes und benutzerfreundliches Format namens JSON. (Wenn Sie mit JSON nicht vertraut sind, sollten Sie hier einige Minuten damit verbringen, sich darüber zu informieren.)

Eines der Grundelemente in Twitter ist ein Tweet. Die Twitter-API zeigt Ihnen, was Sie mit Tweets tun können: Suchen Sie nach Tweets, erstellen Sie einen Tweet, favorisieren Sie einen Tweet. Außerdem erfahren Sie, wie Sie diese Aktionen ausführen. Um nach Tweets zu suchen, müssen Sie Ihre Suchkriterien angeben: zu suchende Begriffe oder Hashtags, Geolokalisierung, Sprache usw.

API-Design

API-Design ist der Prozess, mit dem das „Was“ und das „Wie“ einer API formuliert werden. Wie bei allem anderen, was erstellt werden kann, werden unterschiedliche Ebenen des Denkens und der Sorgfalt in das API-Design einbezogen, was zu unterschiedlichen Ebenen der API-Qualität führt. Gut gestaltete APIs verhalten sich konsistent, berücksichtigen ihren Kontext und berücksichtigen die Bedürfnisse ihrer Benutzer.

Konsistentes Verhalten innerhalb einer API wirkt sich stark auf die Geschwindigkeit aus, mit der sie gelernt werden kann, und auf die Wahrscheinlichkeit, dass Programmierer bei der Verwendung Fehler machen. Im Allgemeinen sollten sich APIs, die ähnliche Aktionen ausführen, unabhängig von ihren technischen Unterschieden ähnlich verhalten. Schauen wir uns als Beispiel für eine inkonsistente API die beiden Möglichkeiten an, wie Sie ein Element zu einer Liste in Java hinzufügen können:

Obwohl die beiden Methoden zum Hinzufügen von Elementen zu einer Liste dasselbe bewirken, unterscheiden sich ihre Rückgabetypen (boolean und void). Entwickler, die diese API verwenden, müssen jetzt verfolgen, welche Methode welchen Typ zurückgibt, was das Erlernen der API erschwert und ihre Verwendung fehleranfälliger macht. Dies bedeutet auch, dass der Code, der diese Methoden verwendet, weniger flexibel wird, da er geändert werden muss, wenn Sie die Art und Weise ändern möchten, in der Sie Elemente hinzufügen.

Die Berücksichtigung des Kontexts ist eine weitere Form der Konsistenz, die jedoch mit Faktoren außerhalb der API zu tun hat. Ein gutes Beispiel dafür ist, wie die Regel der Straße - Rechts- oder Linksverkehr - das Autodesign für verschiedene Länder beeinflusst. Autodesigner berücksichtigen diesen Umweltfaktor, wenn sie den Fahrersitz auf der rechten oder linken Seite des Autos platzieren.