Application Programming Interfaces – kurz APIs – sind enorm wichtig für vernetzte IT-Infrastrukturen. Hier erfahren Sie alles, was Sie wissen müssen. [...]
Ein System von Application Programming Interfaces stellt ein grundlegendes Konzept dar, mit dessen Hilfe verschiedene Software-Komponenten und -Ressourcen miteinander interagieren können.
Ordentlich designte verfügt über interne APIs, um die Organisation des Codes zu erleichtern und die Komponenten wiederverwenden zu können. Darüber hinaus existiert eine Vielzahl öffentlich zugänglicher Schnittstellen, die es Ihnen erlauben, Funktionalitäten zu nutzen, die „Andere“ entwickelt haben.
Was ist eine API?
Ein Application Programming Interface wird definiert als eine Spezifikation möglicher Interaktionen mit einer beliebigen Software-Komponente. Das lässt sich anhand eines Beispiels veranschaulichen: Stellen Sie sich die Software-Komponente einfach als Auto vor. Dessen Schnittstellen würden Auskunft darüber geben, was das Fahrzeug „kann“ – also beschleunigen, bremsen oder das Radio anschalten. Darüber hinaus geben die APIs des Fahrzeugs auch Aufschluss darüber, wie man die genannten Funktionen auslöst: Um zu beschleunigen, betätigen Sie mit dem Fuß das Gaspedal.
Die API muss dabei gar nicht erst erklären, was im Inneren des Verbrennungsmotors abläuft, wenn das Gaspedal betätigt wird. Haben Sie einmal gelernt, ein konventionelles Auto zu steuern, können Sie sich auch hinter das Steuer eines Elektroboliden setzen, ohne sich vorher ein komplett neues Skillset antrainieren zu müssen. Die Informationen über das „Was“ und das „Wie“ werden in der API-Definition festgehalten, welche eine abstrakte Größe darstellt und vom Fahrzeug selbst unabhängig zu betrachten ist.
Dabei sollten Sie sich stets bewusst sein, dass der Name einiger Schnittstellen oft sowohl als Synonym für die Spezifikation der Interaktionen als auch die Software-Komponente selbst gebraucht wird. Die Bezeichnung „Twitter API“ beispielsweise, meint nicht nur das Regel-Set, das bei der Interaktion mit Twitter zur kommt, sondern wird auch als Bezeichnung für das „Ding“ wahrgenommen, mit dem Sie interagieren.
Wie helfen Schnittstellen?
Geht es um Software, sind Schnittstellen buchstäblich allgegenwärtig. Sie gehen Hand in Hand mit einem der grundlegenden Konzepte der Informationstechnik: der Abstraktion. Diese stellt ein Mittel dar, um die Komplexität eines Systems zu „organisieren“ – und komplizierte Tasks zu vereinfachen. Dieses Prinzip lässt sich anhand der allseits bekannten (und in Deutschland weiterhin nicht zulässigen) Amazon Dash Buttons veranschaulichen: Die batteriebetriebenen Druckknöpfe mit integriertem Schaltkreis bestellen auf „Push“ bestimmte Produkte bei Amazon.
Wenn Sie das Produkt nutzen wollen, verbinden Sie es zunächst per Smartphone App mit Ihrem WLAN-Netzwerk und Ihrem Amazon-Konto – anschließend verknüpfen Sie es noch mit einem bestimmten Produkt Ihres täglichen Bedarfs – beispielsweise Toilettenpapier. Sobald sich Ihr Vorrat dann dem Ende zuneigt, bestellen Sie einfach per Knopfdruck nach. Dasselbe Prinzip kommt auch bei einem Application Programming Interface zur Anwendung. Auch hier „versteckt“ eine nach außen simpel wirkende Schnittstelle die Komplexität der Abläufe: Die Produkt-ID muss aus einer Datenbank kommen, Ihre Liefer- und Rechnungsadresse muss über Ihr Konto ermittelt werden, das nächstliegende Logistik-Zentrum muss kontaktiert werden – bevor sich Ihre Lieferung dann endlich auf den Weg zu Ihnen machen kann. Wobei natürlich auch die pünktliche Lieferung aller anderen Bestellungen sichergestellt sein muss.
Jetzt stellen Sie sich vor, Sie müssten all diese Abläufe als Kunde selbst managen. Wahrscheinlich würden Sie auf eine alternative Beschaffungsmöglichkeiten für Toilettenpapier umsteigen, schließlich wäre die Komplexität und der zeitliche Aufwand für eine einzelne Bestellung viel zu hoch. Der Auslieferung Ihres Toilettenpapiers liegt eine lange, computergestützte Prozesskette zu Grunde – aber Sie müssen sich nur über eine Sache Gedanken machen: den Druck auf den Button.
Genau so funktionieren APIs für Softwareentwickler und Programmierer: Ein überbordendes Maß an Komplexität wird in ein relativ simples Interaktions-Set gesteckt, das fortan genutzt werden kann, um nicht jedes Mal bei null starten zu müssen. Im Rahmen eines Software-Projekts können tausende von Schnittstellen zum Einsatz kommen, von denen sich jede einzelne wiederum auf eine andere API verlässt.
Wie geht API-Integration?
Schnittstellen gehören seit Jahren zum Standardrepertoire von Computerwissenschaftlern und Programmierern. Traditionell wurden APIs genutzt, um Code-Komponenten, die auf derselben Maschine laufen, verbinden zu können. Weil Netzwerke heute allgegenwärtig sind, sind mehr und mehr sogenannte „public“ oder auch „open“ APIs verfügbar. Solche Schnittstellen sind „nach außen“ gerichtet und über das Internet erreichbar. Das ermöglicht Ihnen, Programmcode zu erstellen, der via Netz mit dem Softwarecode anderer Unternehmen interagieren kann. Dieser Prozess heißt API-Integration.
„Open“ oder „public“ ist in diesem Zusammenhang allerdings nicht gleichzusetzen mit „kostenlos“. Die Verfügbarkeit solcher APIs simplifiziert die Schnittstellenintegration jedoch deutlich. Zahlreiche offene APIs stehen Ihnen im Web zur Verfügung – insbesondere die Tech-Giganten tun sich hierbei hervor. Die Plattformen werden dabei im Grunde erst durch die Möglichkeiten, die ihre Schnittstellen schaffen zu richtigen Plattformen:
- Google APIs verbinden Ihren Code mit der ganzen Palette von Google Services. Für den Konzern nehmen APIs einen hohen Stellenwert ein. Deshalb wurde vor einigen Jahren mit Apigee auch eine führende Schnittstellen-Management-Plattform akquiriert;
- Facebook APIs verschaffen Ihnen unter anderem Zugang zu den Marketing Tools des Unternehmens. Nach dem Skandal um Cambridge Analytica hat Facebook allerdings die Verfügbarkeit der über die APIs abrufbaren Informationen stark eingeschränkt.
Eine Übersicht über weitere, wichtige Application Programming Interfaces, die Sie kennen sollten, finden Sie hier.
Web Services gleich APIs?
Vielleicht erinnern Sie sich noch an den Begriff „Web Services“ (der vor allem kurz nach der Jahrtausendwende gerne und teilweise inflationär gebraucht wurde) und das Prinzip der „open APIs“ kommt Ihnen irgendwie bekannt vor? In der Tat ist ein Web Service nur eine bestimmte Art von offener Schnittstelle – und zwar eine, die ein ziemlich rigides Spezifikations-Set erforderlich macht. Dazu gehört beispielsweise, dass dieses in WSDL (Web Services Description Language) – einer XML-Variante – vorliegt.
Web Services sollten ursprünglich Teile einer Serviceorientierten Architektur (SOA) sein. Weil SOAs nie ihr volles Potenzial entfalten konnten, haben auch Web Services nicht den Durchbruch geschafft. Der technologische Fortschritt in der Service-zu-Service-Kommunikation – insbesondere das Aufkommen der schlankeren, flexibleren REST–APIs – hat ebenfalls dazu beigetragen, dass die Web Services in der Welt der public APIs an Stellenwert verloren haben.
Was ist REST? Und was kann es?
Ursprünglich sollten Web Services über das Messaging-Protokoll SOAP (Simple Object Access Protocol) kommunizieren, das XML-Dokumente per http verschickt. Heutzutage nutzen die meisten webbasierten Schnittstellen allerdings das REST (Representational State Transfer) -Protokoll als Architekturgrundlage.
Formal eingeführt wurde REST im Jahr 2000 vom Computerwissenschaftler Roy Fielding. Es beinhaltet ein Set von Architektur-Komponenten, Design-Prinzipien und Interaktionen, um verteilte Systeme zu erzeugen, die mediale Inhalte verschiedenster Art (Text, Bild, Video) beinhalten. Im Kern ist REST eine Art und Weise – ein Stil – Systeme zu bauen, der flexible Kommunikation und die Darstellung von Informationen quer über das World Wide Web erlaubt. Dabei stellt er auch die nötige Grundstruktur zur Verfügung, um Komponenten für allgemeine Zwecke einfach erstellen zu können.
Innerhalb einer REST–API kann eine Ressource so gut wie alles sein, beispielsweise ein User, eine Liste mit Tweets oder die Ergebnisliste bei der Suche nach Tweets. Jede dieser Ressourcen ist über einen „resource identifier“ adressierbar. Im Fall der webbasierten REST-Schnittstellen handelt es sich dabei im Regelfall um die URL. Wenn eine Applikation nun eine Ressource anfragt, die diesen „identifier“ nutzt, liefert die API dessen derzeitige „representation“ in einem Format, das die Anwendung entsprechend verarbeiten kann – etwa eine JPEG-Datei oder eine HTML-Seite.
Eines der wesentlichen Alleinstellungsmerkmale von REST ist, dass es Daten an die anfragende Anwendung überträgt. Das führt zwar zu großer Flexibilität, denn die Applikation kann mit den Daten „machen, was sie will“, kostet auf der anderen Seite aber auch Effizienz. Daten über das Web zur Verarbeitung zu „transportieren“, dauert schließlich seine Zeit.
API-Beispiele
Im Netz gibt es zahlreiche öffentliche Schnittstellen, mit denen sie interagieren können – insbesondere von Seiten der Industrie-Schwergewichte. Einige prominente Beispiele sind:
- Google APIs: Versetzen Sie in die Lage, Ihren Code mit der ganzen Bandbreite der Google Services zu verknüpfen – von Maps bis hin zum Übersetzer. Schnittstellen sind für Google so bedeutend, dass das Unternehmen zu diesem Zweck Apigee akquiriert hat – eine führende API-Management-Plattform.
- Facebook APIs: Ermöglichen den programmatischen Zugriff auf Facebook Social-Graph- und Marketing Tools.
Um eine Vorstellung davon zu bekommen, wie APIs in der Praxis funktionieren, betrachten wir in den folgenden beiden Absätzen zum einen die Java API, zum anderen die Twitter API etwas genauer.
Die Java-Schnittstelle
Die Java API stellt eine Bibliothek für „out of the box“-Software-Komponenten dar, die jedem, der das Java Development Kit installiert hat, uneingeschränkt zur Verfügung stehen. Diese Komponenten werden genutzt, um gängige Tasks zu implementieren und sorgen ganz allgemein für eine erhöhte Produktivität, weil die Entwickler nicht jedes Mal bei Null beginnen müssen.
Eine grundlegende Software-Komponente ist beispielsweise eine Liste. Die Java API definiert, was Sie mit dieser Liste anfangen können: Gegenstände hinzufügen, die Liste sortieren, und so weiter. Darüber hinaus legt die Schnittstelle auch fest, auf welche Art und Weise diese Aktionen von statten gehen. Um beim Beispiel der Liste zu bleiben: Um diese zu sortieren, müssen Sie spezifizieren, ob sie diese alphabetisch, numerisch oder beispielsweise nach Farbgebung sortieren möchten.
Die Twitter-Schnittstelle
Die Twitter API ist – im Gegensatz zur Java API – eine webbasierte JSON-Schnittstelle, die es Softwareentwicklern erlaubt, programmatisch mit Twitter-Daten zu interagieren. Um auf die Twitter API zuzugreifen, muss eine Anfrage über das Internet gestellt werden. Bei einer webbasierten Schnittstelle sendet Ihre Applikation einen http-Request – genau so, wie das ein Webbrowser machen würde. Nur dass die Antwort dabei nicht in Form einer Webseite zurückkommt, sondern in einem Format, das von einer Software verarbeitet wird. Diese Formate gibt es in verschiedenen Ausgestaltungen – Twitter setzt auf das populäre und besonders einfach zu nutzende JSON.
Ein grundlegendes Element von Twitter ist ein Tweet. Die Twitter-Schnittstelle definiert, was Sie mit Tweets tun können – etwa (Durch)Suchen oder Erstellen. Die API legt aber auch fest, wie das abläuft. Um Tweets zu durchsuchen, müssen Sie etwa die Kriterien in Form von Suchbegriffen oder Hashtags spezifizieren.
Wie geht Schnittstellen-Design?
API Design beschreibt den Prozess, in dem das „was“ und das „wie“ einer Schnittstelle ausformuliert werden. Wie bei allen kreativen Unterfangen kommt es auch beim API Design im Wesentlichen darauf an, wieviel Sorgfalt und Knowhow die Entwickler an dieser Stelle einfließen lassen. Ein qualitativ hochwertiges Application Programming Interface:
- ist konsistent,
- in der Lage Kontext mit einzubeziehen
- und die Bedürfnisse der User zu berücksichtigen.
Konsistentes Verhalten nimmt dabei wesentlichen Einfluss darauf, wie schnell die API zum Einsatz kommen kann und wie fehleranfällig sie bei der Softwareentwicklung selbst ist. Im Allgemeinen sollten APIs, die ähnliche Aufgaben ausführen sich auch ähnlich „verhalten“ – ihre technischen Unterschiede spielen dabei keine Rolle.
Die Einbeziehung von Kontext ist eine andere Form der Konsistenz, obwohl das mit externen Faktoren zusammenhängt und nicht mit der API selbst. Es geht dabei darum, auf gängige Best Practices zurückzugreifen und sich von anderen APIs „inspirieren“ zu lassen, mit deren Funktionsweise Ihre User bereits vertraut sind.
Ganz oben auf Ihrer Prioritätenliste sollten beim Schnittstellen-Design allerdings Ihre User stehen: Sie sollten wissen, wer diese sind und welche Bedürfnisse sie haben. Wenn Sie die „pain points“ Ihrer User kennen und Ihnen dabei helfen, diese aus der Welt zu schaffen, stehen die Chancen für eine glückliche Nutzerschaft gut. Wenn Sie nun bereit sind, mit Application Programming Interfaces durchzustarten, sollten Sie sich diese Auflistung kostenloser Schnittstellen-Entwicklungstools nicht entgehen lassen.
*Jonathan Freeman ist Softwareentwickler und lebt in Chicago. Er arbeitet als freiberuflicher Autor für unsere US-Schwesterpublikation Infoworld.
**Florian Maier beschäftigt sich mit vielen Themen rund um Technologie und Management. Daneben betätigt er sich auch in sozialen Netzen.
Be the first to comment