Skip to content

Was sind eigentlich APIs?

Schon im Jahr 2011 veröffentlichte Marc Andreessen den Artikel „Why software ist eating the world“ (Andreessen 2011). Nun schreibt Niko Köbler in seinem Artikel auf JAXenter - News, Articles, C „APIs are eating the world!“ (Köbler 2018). Aber was sind eigentlich APIs? Wofür werden sie benötigt und was bringen sie mir für Vorteile? Dies und noch viel mehr möchte ich in den nächsten Zeilen beleuchten.

 

Wozu benötigt man APIs?

 

Systemlandschaften werden durch serviceorientierte Architekturen und Microservices immer komplexer. Dies bringt auch neue Herausforderungen für Softwareentwickler mit sich. Die Systeme müssen miteinander kommunizieren. Dies geschieht häufig über wohldefinierte Verträge, sogenannte APIs. Auf der Darbietung von unternehmenseigenen Diensten, durch diese APIs, basieren heutzutage ganze Geschäftsmodelle. Uber beispielsweise stellt lediglich die mobile App zur Verfügung. Die Fahrer- und Fahrgastverwaltung, sowie die Zahlungsdienstleistungen werden über externe Dienstleister via API angeboten.

APIs verändern also unsere Geschäftswelt. Schon lange spielen Software und APIs keine untergeordnete Rolle mehr, sondern tragen aktiv zum Erfolg eines Unternehmens bei, indem sie die Entwicklung neuer Geschäftsmodelle unterstützen und sicherstellen, dass diese möglichst schnell für den Kunden verfügbar sind (Vgl. Köbler 2018).  

Speziell im Bereich von Webservices wird der Bedarf solcher vordefinierten Schnittstellen sichtbar. Anwendungen müssen heute von vielen verschiedenen Endgeräten zugänglich sein, sei es vom Notebook, dem Smartphone oder selbst vom Auto. So können beispielweise die angebotenen Dienste von Google Maps über diese vordefinierten Schnittstellen bzw. APIs auch in diversen anderen Applikationen genutzt werden. Dadurch wird es nämlich auch für Kunden einfacher die Dienste von anderen Unternehmen zu nutzen. Es werden keine aufwändigen Integrationen mehr notwendig. Die benötigten Ressourcen können einfach mittels HTTP-Anfragen an der Schnittstelle abgegriffen werden. 

 

 

Und was genau sind jetzt APIs?

 

Der Begriff API ist eine Abkürzung und steht für „Application Programming Interface“. Das sind Schnittstellen, um die Interaktion zwischen verschiedenen Anwendungen zu erleichtern. APIs definieren damit eine Art Vertrag, in dem beschrieben wird, wie unterschiedliche Systeme miteinander kommunizieren können. Hierbei ist dann kein manueller Benutzereingriff mehr notwendig. 

So können bspw. Reiseportale mit dem jeweiligen Hotelreservierungssystem und dieses wiederum mit der Bank interagieren, um einen Buchungsprozess zu automatisieren. Über die Schnittstelle werden so gewisse Funktionalitäten eines Service nach außen angeboten, damit sie von anderen Applikationen genutzt werden können. Der große Vorteil besteht darin, dass es nicht mehr notwendig ist, dass der Programmcode von den Entwicklern eingesehen werden muss. Alle nötigen Informationen finden sich in der API (Vgl. De 2017, S. 1–2). 

Hierfür muss auch der Herausgeber einer solchen API gewisse Informationen bereithalten, um den reibungslosen und vor allem einfachen Zugang zu diesen zu gewähren. Essenziell ist die Funktionalität, die die Schnittstelle bereitstellen soll. Je nach gewählter Technologie werden Funktionen oder Ressourcen in einer Auszeichnungssprache dargestellt. Im Normalfall ist die API, bzw. deren Ressourcen über eine URL zu erreichen. Diese Pfade müssen dann auch in der API vorhanden sein.

 

 

Grundlagen von APIs

 

Der Begriff „API“ wird aber oft weit vielfältiger verwendet als nur für die reine Darbietung der von außen verfügbaren Funktionalitäten. Häufig sind damit auch die dahinterstehenden Services und Funktionalitäten selbst gemeint. Aus diesem Grund ist es wichtig die Schnittstelle und den Code bzw. die Implementierung voneinander abzugrenzen. Die Darstellung der angegebenen Funktionalitäten und Ressourcen, also das was uns Zugang zu dem dahinterliegenden Service gewährt, wird als Schnittstelle bezeichnet. Häufig werden dafür Standards, wie JSON oder XML verwendet. 

Die Implementierung hingegen, stellt dann die dafür bereitgestellte Funktionalität dar. Sie ist der tatsächliche Code der Services, um die Funktionen, der angebotenen Schnittstelle zu realisieren. Diese ist für den Kunden normalerweise nicht sichtbar (Vgl. Medjaoui et al. 2018, S. 3–4).

 

 

Und weiter?

 

Um der API noch etwas mehr Leben einzuhauchen zeige ich euch nun den Aufbau dieser am Beispiel von REST APIs:

REST steht ausgeschrieben für „Representational State Transfer“. REST beschreibt einen Architekturstil und ist kein strikter Standard. Es werden lediglich Richtlinien vorgegeben, denen die Architektur eines Webservices Folge leisten sollte. Erstmals wurden diese Konventionen in der Doktorarbeit von Roy Fieldings beschrieben. Neben einigen Richtlinien, denen REST-Services folgen, beruht die Kommunikation von Client und Server dabei auf dem HTTP-Protokoll (Vgl. De 2017, S. 29–32.

Für REST APIs leiten sich aus diesen Prinzipien verschiedene Vorgaben ab. So verweisen diese APIs immer auf Ressourcen, wie beispielsweise die Daten eines Kunden. Die Beschreibung einer solchen Schnittstelle wird meist mit JSON oder YAML geschrieben und durch die OpenAPI Specification realisiert. Darauf werde ich in einem späteren Blogpost noch genauer zu sprechen kommen. Die Lokalisierung der Ressourcen geschieht über sogenannte URIs, die den Pfad zu einer solchen Ressource aufzeigen. In den meisten Fällen liegen die Ressourcen ebenfalls im JSON-Format vor. 

 Was mit solch einem Datensatz dann passiert, ist der URI aber nicht direkt zu entnehmen. Hier kommen HTTP-Methoden zum Einsatz, über die die gängigen CRUD-Operationen angewendet werden können. Beispiele wären GET, POST oder DELETE. Wenn dann eines solche Anfrage an eine API geschickt wird, erhält dieser Antwort in Form von HTTP-Statuscodes, welche dem anfragenden Client darüber Auskunft geben, ob sein Request erfolgreich war oder nicht. Sowohl die HTTP-Methoden als auch die Statuscodes wurden im RFC 7231 definiert (Vgl. Fielding und Reschke 2014).

 

 

Vorteile von APIs

 

Für uns als Provider der APIs wird dadurch der Code von der Schnittstelle entkoppelt. Dies macht es uns möglich die Schnittstellen anzubieten, ohne den dahinterliegenden Code offenlegen zu müssen. Services können so leicht von Dritten genutzt werden. Auch Änderungen an der Software werden dadurch erheblich vereinfacht. Folgen keine Änderungen an der Schnittstelle, so ist nichts weiter zu tun. Gibt es Änderungen, werden die Kunden über eine neue API-Version einfach und transparent informiert. 

Auch für die Kunden oder Consumer bringen APIs jede Menge Vorteile. Durch die lose Kopplung ist es nicht notwendig eine gesamte Infrastruktur anzubinden. Die Kunden können ausschließlich die Ressourcen nutzen, die sie benötigen und diese mittels einer HTTP-Methode einfach abfragen. Was genau Kunden von der API erwarten können und was sie bei Anfragen mit übergeben sollen ist in der API Dokumentation definiert und jederzeit einsehbar. Dadurch sind die Anfragen leicht zu verstehen und die Antworten wiederum erwartbar. 

Ich könnte euch noch so viel über APIs erzählen… Aber für heute reicht das. Haben wir euer Interesse geweckt? Dann abonniert unseren Blog, um immer direkt über neue Blogbeiträge informiert zu werden!

 

Bei allen Fragen rund um Switchboard, APIs und API Management könnte ihr uns jederzeit über das Kontaktformular erreichen. 

 

 

Quellen:

Andreessen, Marc (2011): Why Software Is Eating The World. In: The Wall Street Journal, 20.08.2011. Online verfügbar unter: Why Software Is Eating The World , zuletzt geprüft am 22.10.2021.

De, Brajesh (2017): API Management. An Architect's Guide to Developing and Managing APIs for Your Organization. New York City: Apress Media LLC. 

Fielding, Roy Thomas; Reschke, Julian (2014): RFC 7231 - Hypertext Transfer Protocol (HTTP/1.1): Semantics and Content. Hg. v. Internet Engineering Task Force (IETF). Online verfügbar unter: rfc7231, zuletzt geprüft am 22.10.2021.

Köbler, Niko (2018): APIs – die Zukunft der Softwareentwicklung?! APIs are eating the World! In: Jaxenter. Online verfügbar unter: jaxenter - entwickler.de/softwareentwicklung-69883, zuletzt geprüft am 25.05.2019.

Blog comments