Heute dreht sich alles um das Thema: „Was ist eigentlich eine API?”
Der Begriff API stammt aus dem Englischen und ist die Kurzform von „Application-Programming-Interface“. Frei ins Deutsche übersetzt bedeutet das, so viel wie „Schnittstelle zur Anwendungsprogrammierung“. Allerdings wird die API umgangssprachlich meistens als Programmierschnittstelle bezeichnet und ist für das moderne Programmieren unerlässlich.
Generell dienen Programmierschnittstellen zur Kommunikation, zum Austausch sowie zur Weiterverarbeitung von Daten und Inhalten zwischen verschiedenen Geräten, Programmen, Websites oder Anbietern. So ermöglichen APIs zum Beispiel die Fernsteuerung der heimischen Heizung, indem sie die Temperaturwerte, die von einem Thermostat gemessenen wurden, über eine Cloud zum Smartphone des Endverbrauchers übermitteln.
Im Gegensatz zu einer Benutzerschnittstelle kommunizieren die Anwendungen direkt miteinander und nicht der Menschen mit einem System. Mal angenommen ein Internetnutzer bestellt einen Fernseher im Webshop. Dann kommuniziert er nur über die Weboberfläche des Onlineshops. Das Shopsystem selbst kann über die Programmierschnittstelle die Kundenbonität erfragen, die Zahlung per Kreditkarte oder Paypal veranlassen, bei einer Versicherung eine Garantieverlängerung abschließen und einen Spediteur beauftragen.
In anderen Unternehmensprozessen gewährleisten Programmierschnittstellen beispielsweise den Austausch sowie die Weiterverarbeitung von Daten und Inhalten zwischen Customer Relationship Management (CRM), Dokumentenmanagementsystem (DMS) und Enterprise-Resource-Planning (ERP) über die Cloud.
Aber wie funktioniert die API nun genau?
Die Programmierschnittstelle dient wie bereits erwähnt dazu, Soft- und Hardwarekomponenten wie Anwendungen, Festplatten oder Benutzeroberflächen zu verbinden, sprich mit einer API können zwei Anwendungen, die voneinander unabhängig sind, problemlos interagieren und Inhalte, Ressourcen und Daten austauschen. Die Übergabe von Daten und Befehlen erfolgt dabei strukturiert nach einer zuvor definierten Syntax*.
Hierzu werden einzelne Programmteile, die spezifische Funktionen erfüllen, vom Rest des Programmes abgekapselt. Die Module kommunizieren untereinander lediglich über die festgelegte API. Dort werden ausschließlich die Daten übergeben, die für den weiteren Programmablauf benötigt werden. Die API definiert dabei, in welcher Form Daten vom Anwendungsmodul entgegengenommen und wieder zurückgegeben werden. Der eigentliche Programmablauf innerhalb des Moduls ist für die API unwichtig.
Im Gegensatz zu einer Binärschnittstelle, kurz ABI, findet in der API die Programmanbindung rein auf der Quelltext-Ebene statt. Zur Bereitstellung einer API gehört meist eine ausführliche elektronische oder aber eine papiergebundene Dokumentation, in der die einzelnen Schnittstellenfunktionen, der genauen Syntax und die möglichen Parameter aufgeführt sind.
Grundsätzlich können Programmierschnittstellen in verschiedene Typen unterteilt werden: funktionsorientierte APIs, dateiorientierte APIs, objektorientierte APIs, protokollorientierte APIs und die RESTful-API-Schnittstelle.
- Funktionsorientierte APIs: Die funktionsorientierten Programmierschnittstellen reagieren nur auf Funktionen, wahlweise mit oder ohne Rückgabewert. Auf den Aufruf einer Funktion folgt die Ausgabe eines Referenzwertes (Handle). Dieser Wert dient zum Aufruf weiterer Funktionen, sind alle Funktionen verfügbar, wird das Handle geschlossen.
- Dateiorientierte APIs: Die dateiorientierten Programmierschnittstellen werden über die Befehle open, read, write und close angesprochen. Gesendete Daten werden mit write geschrieben, sollen Daten empfangen werden, sind diese mit dem read-Kommando einzulesen.
- Objektorientierte APIs: Die objektorientierten Programmierschnittstelle adressieren definierte Schnittstellen-Pointer, was diesem Schnittstellentyp gegenüber funktionsorientierten Schnittstellen eine erhöhte Flexibilität verleiht. Oft wird mit den Daten auch eine Typ- oder Klassen-Bibliothek übergeben.
- Protokollorientierte APIs: Die protokollorientierten Programmierschnittstellen befinden sich in keinerlei Abhängigkeit von Betriebssystem oder Hardware, allerdings ist das Übergabeprotokoll stets neu zu implementieren. Um diesen Vorgang zu erleichtern, werden protokollorientierte Schnittstellen im Regelfall von interface- oder funktionsorientierten Schnittstellen gekapselt.
- RESTful-API-Schnittstelle: Die RESTful-API-Schnittstelle stellt einen Sonderfall dar. Hierbei handelt es sich um eine Schnittstelle für Anfragen im HTTP-Format, der Datenzugriff erfolgt über GET-, PUT-, POST- und DELETE-Befehle.
Programmierschnittstellen sind mittlerweile in vielen Bereichen unterschiedlichster Softwareanwendungen vorzufinden. Im Web-Umfeld kommen APIs häufig bei Online-Shops und Content-Management-Systemen zum Einsatz. Es können dadurch unterschiedliche Bezahldienstleister, Online-Marktplätze, Shop-Bewertungssysteme oder Versanddienstleister und weitere Services mit wenig Aufwand standardisiert an die verschiedenen Systeme angebunden werden. Beispielsweise existieren APIs zu Services wie: Wikipedia, Google Maps, Facebook, Twitter, PayPal, DHL etc.
Bevor wir nun zum Ende unseres heutigen Podcasts kommen, möchte ich auf die Frage eingehen: Welche Vorteile ergeben sich nun durch die Verwendung von Programmierschnittstellen?
Einer der vielen Vorteile ist es, die Entwicklung von Software zu vereinfachen, indem komplizierte und zeitaufwendige Aufgaben automatisiert werden. Das bedeutet, dass bestimmte Aufgaben, die mehrere Stunden in Anspruch nehmen, nun in wenigen Sekunden durchgeführt werden können. Zudem sind die angebundenen Programme weniger fehleranfällig und leichter wartbar, da modulare Programmcodes verwendet werden. Arbeiten einzelne Funktionen fehlerhaft, müssen lediglich die betroffenen Module und die an der API übergebenen Daten genauer geprüft werden.
Ein weiterer Vorteil, dass sich aus einer sauber dokumentierten Programmierschnittstelle ergibt, ist die Möglichkeit der Auslagerung von Programmierarbeiten. Die Entwicklung einzelner Teilbereiche einer Software kann dank der Programmierschnittstelle mit geringem Aufwand an eine externe Softwareunternehmen oder freie Entwickler übertragen werden.
Zudem können Drittanbieter selbst Funktionen für das System entwickeln. Dadurch steigert sich die Attraktivität und Flexibilität des Gesamtprodukts und es ergeben sich klare Wettbewerbsvorteile.
Allerdings gibt es neben den genannten Vorteilen auch Nachteile: Um andere Anwendungen, Festplatten oder Benutzeroberflächen individuell anbinden zu können, braucht man Programmierkenntnisse. Hat man also keinen Entwickler im Unternehmen, muss man jemanden extern beauftragen. Außerdem benötigt das Entwickeln einer Anbindung Zeit.
Kontakt: Ingo Lücker, ingo.luecker@itleague.de