Was ist eine API?

29.06.2021 von Jonathan Freeman und Florian Maier
Application Programming Interfaces – kurz APIs – sind enorm wichtig für vernetzte IT-Infrastrukturen. Hier erfahren Sie alles, was Sie über Schnittstellen wissen müssen.
Schnittstellen sind essenziell für die IT-Vernetzung. Wir sagen Ihnen, was Sie über APIs wissen müssen.
Foto: Tavarius - shutterstock.com

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 Software 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 Anwendung 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 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.

10 Dinge die Softwareentwickler austicken lassen
Produkt- & Projektmanager
Ganz generell schätzen es Entwickler nicht so besonders, wenn ihnen jemand erklären will, wie sie ihren Job zu machen haben. Weil Produkt- und Projektmanager aber oft Entwickler-Teams leiten, passiert genau das. Das kann zu Unstimmigkeiten führen. <br /><br /> Dazu hat auch David Fox von devRant eine Meinung: "Letztendlich ist es in den meisten Fällen so, dass Produkt- und Projektmanager in irgendeiner Art und Weise die 'Besitzer' von Projekten und Prozessen sind, ohne dabei die täglichen Herausforderungen und Probleme der Softwareentwickler zu kennen."
Chefs
Genau wie die Produkt- und Projektmanager sind auch Development oder Engineering Manager dafür zuständig, Teams von Entwicklern zu führen und sicherzustellen, dass Projekte rechtzeitig und unter Budget fertiggestellt werden. <br /><br /> "In einigen Unternehmen können Situationen entstehen, in denen der Chef gleichzeitig Mitglied des Entwicklerteams ist. Insbesondere wenn der Chef vorher selbst Entwickler war und nach einer Beförderung zum Chef wird, ist Konfliktpotenzial gegeben", merkt Fox an.
Recruiter
Softwareentwickler müssen gar nicht selbst aktiv nach einem Job suchen, um von Recruitern und Headhuntern belästigt zu werden - dem Fachkräftemangel sei Dank. Es dürfte sehr schwer sein, einen Developer zu finden, der noch nicht in die Fänge der Recruiter geraten ist. <br /><br /> David Fox sieht insbesondere die Hartnäckigkeit der Recruiter als Problem: "Sie rufen an, sie e-mailen und sie lassen Dich einfach nicht in Ruhe - selbst dann, wenn Du gar keinen Job suchst. Und selbst wenn man eine Anstellung sucht, neigen viele Recruiter dazu, irrelevante Jobangebote zu machen oder Stellen zu empfehlen, deren Profil überhaupt nicht passt - etwa einen Job am anderen Ende des Landes, obwohl man gar nicht bereit ist, umzuziehen."
Dokumentation
Gibt es keine Dokumentation, beschweren sich die Softwareentwickler. Wenn es zuviel ist, beschweren sie sich und wenn sie die Dokumentation selbst erledigen müssen, auch. Sogar über die Art und Weise, wie andere Leute die Dokumentationsaufgabe bewältigen, beschweren sich die Entwickler. <br /><br /> An dieser Stelle seien sich auch endlich einmal alle Entwickler einig, wie Fox betont: "Softwareentwickler wollen eine ausführliche, gut geschriebene und akkurate Dokumentation - aber selber machen wollen sie es nicht."
Meetings
Meetings sind nicht nur für alle anderen ein Problem, sondern auch für Softwareentwickler. Insbesondere dann, wenn es sich um völlig unnötige, zeitraubende und stinklangweilige Zusammenkünfte handelt. Wie Fox erzählt, sind inzwischen auch Devotionalien mit der Aufschrift 'I survived another meeting that should have been an email' erhältlich.
Coworking Spaces
Mit dem Aufstieg der Agilität sind flache Hierarchien, Collaboration und Teamwork zum Alltag in Unternehmen geworden - insbesondere für Software-Development-Teams. Gerade die können ihre Arbeit in einem Großraumbüro aber meist nur schwer oder gar nicht bewältigen - sagen zumindest die Zahlen von devRant. <br /><br /> David Fox erklärt: "Es gibt einfach zuviel Ablenkung: die Kollegen unterhalten sich, Meetings werden verpasst, Telefonanrufe überhört. Es gibt auch eine Vielzahl an Beschwerden über den Kaffee im Büro und andere Annehmlichkeiten - oder eben das Gegenteil davon."
Kollegen
Selbsterklärend: Jeder hat wohl einen Kollegen oder eine Kollegin, den beziehungsweise die er ganz besonders schätzt. Nicht. <br /><br /> Im Fall der Softwareentwickler ist die Abneigung gegenüber Kollegen meist entweder in der mangelnden Qualität ihrer Arbeit oder einem völlig aus dem Leim gegangenen Ego begründet, gibt David Fox preis.
Vorstellungsgespräche
Wenn ein Softwareentwickler auf Jobsuche ist und zum Bewerbungsgespräch geladen wird, gibt es danach meist auch etwas zu meckern: <br /><br /> "Dumme Fragen oder die Lösung von völlig praxisfernen Aufgaben im Bewerbungsgespräch stoßen den Developern ebenso sauer auf, wie ein Gesprächspartner, der überhaupt nicht weiß, was ein Entwickler eigentlich genau macht", so Fox.
Fehler & Bugs
Softwareentwickler haben tagein, tagaus mit Fehlern und Bugs zu tun. Deswegen glaubt devRant-Gründer Fox, dass Entwickler in dieser Sache anders ticken: <br /><br /> "Die meisten anderen Probleme erfahren keine positive Auflösung, aber Bugs und Fehler sind behebbar und das fühlt sich gut an."
Quality Assurance
Die Quality Assurance (QA) - oder Qualitätssicherung - ist ein kritischer Teil der Softwareentwicklung. Dennoch bemängeln Softwareentwickler an QA-Experten häufig dieselben Dinge wie an Produkt- und Projektmanagern, so Fox. <br /><br /> "Die Qualitätssicherung bekommt das Produkt oder Projekt in die Hände, wenn die Entwickler es abgeschlossen haben. Deswegen verstehen sie oft nicht, welche Hürden und Workarounds die Entwickler im Entstehungsprozess bewältigen mussten. Offensichtlich kommt es auch regelmäßig vor, dass QA-Leute die Entwickler bitten, Bereiche nochmals zu überarbeiten, die sie auch selbst bewältigen könnten."

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:

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:

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:

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.

Dieser Beitrag basiert auf einem Artikel unserer US-Schwesterpublikation Infoworld.