{"version":1,"type":"rich","provider_name":"Libsyn","provider_url":"https:\/\/www.libsyn.com","height":90,"width":600,"title":"#122 - Was ist eigentlich eine API?","description":"Heute dreht sich alles um das Thema: \u201eWas ist eigentlich eine API?\u201d &amp;nbsp; Der Begriff API stammt aus dem Englischen und ist die Kurzform von \u201eApplication-Programming-Interface&quot;. Frei ins Deutsche \u00fcbersetzt bedeutet das, so viel wie \u201eSchnittstelle zur Anwendungsprogrammierung\u201c. Allerdings wird die API umgangssprachlich meistens als  Programmierschnittstelle bezeichnet und ist f\u00fcr das moderne Programmieren unerl\u00e4sslich. Generell dienen Programmierschnittstellen zur Kommunikation, zum Austausch sowie zur Weiterverarbeitung von Daten und Inhalten zwischen verschiedenen Ger\u00e4ten, Programmen, Websites oder Anbietern. So erm\u00f6glichen APIs zum Beispiel die Fernsteuerung der heimischen Heizung, indem sie die Temperaturwerte, die von einem Thermostat gemessenen wurden, \u00fcber eine Cloud zum Smartphone des Endverbrauchers \u00fcbermitteln. 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 \u00fcber die Weboberfl\u00e4che des Onlineshops. Das Shopsystem selbst kann \u00fcber die Programmierschnittstelle die Kundenbonit\u00e4t erfragen, die Zahlung per Kreditkarte oder Paypal veranlassen, bei einer Versicherung eine Garantieverl\u00e4ngerung abschlie\u00dfen und einen Spediteur beauftragen. In anderen Unternehmensprozessen gew\u00e4hrleisten Programmierschnittstellen beispielsweise den Austausch sowie die Weiterverarbeitung von Daten und Inhalten zwischen Customer Relationship Management (CRM), Dokumentenmanagementsystem (DMS) und Enterprise-Resource-Planning (ERP) \u00fcber die Cloud. Aber wie funktioniert die API nun genau? Die Programmierschnittstelle dient wie bereits erw\u00e4hnt dazu, Soft- und Hardwarekomponenten wie Anwendungen, Festplatten oder Benutzeroberfl\u00e4chen zu verbinden, sprich mit einer API k\u00f6nnen zwei Anwendungen, die voneinander unabh\u00e4ngig sind, problemlos interagieren und Inhalte, Ressourcen und Daten austauschen. Die \u00dcbergabe von Daten und Befehlen erfolgt dabei strukturiert nach einer zuvor definierten Syntax*. Hierzu werden einzelne Programmteile, die spezifische Funktionen erf\u00fcllen, vom Rest des Programmes abgekapselt. Die Module kommunizieren untereinander lediglich \u00fcber die festgelegte API. Dort werden ausschlie\u00dflich die Daten \u00fcbergeben, die f\u00fcr den weiteren Programmablauf ben\u00f6tigt werden. Die API definiert dabei, in welcher Form Daten vom Anwendungsmodul entgegengenommen und wieder zur\u00fcckgegeben werden. Der eigentliche Programmablauf innerhalb des Moduls ist f\u00fcr die API unwichtig. Im Gegensatz zu einer Bin\u00e4rschnittstelle, kurz ABI, findet in der API die Programmanbindung rein auf der Quelltext-Ebene statt. Zur Bereitstellung einer API geh\u00f6rt meist eine ausf\u00fchrliche elektronische oder aber eine papiergebundene Dokumentation, in der die einzelnen Schnittstellenfunktionen, der genauen Syntax und die m\u00f6glichen Parameter aufgef\u00fchrt sind. &amp;nbsp; &amp;nbsp; Grunds\u00e4tzlich k\u00f6nnen 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\u00fcckgabewert. Auf den Aufruf einer Funktion folgt die Ausgabe eines Referenzwertes (Handle). Dieser Wert dient zum Aufruf weiterer Funktionen, sind alle Funktionen verf\u00fcgbar, wird das Handle geschlossen. Dateiorientierte APIs: Die dateiorientierten Programmierschnittstellen werden \u00fcber 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\u00fcber funktionsorientierten Schnittstellen eine erh\u00f6hte Flexibilit\u00e4t verleiht. Oft wird mit den Daten auch eine Typ- oder Klassen-Bibliothek \u00fcbergeben. Protokollorientierte APIs: Die protokollorientierten Programmierschnittstellen befinden sich in keinerlei Abh\u00e4ngigkeit von Betriebssystem oder Hardware, allerdings ist das \u00dcbergabeprotokoll 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\u00fcr Anfragen im HTTP-Format, der Datenzugriff erfolgt \u00fcber GET-, PUT-, POST- und DELETE-Befehle.  Programmierschnittstellen sind mittlerweile in vielen Bereichen unterschiedlichster Softwareanwendungen vorzufinden. Im Web-Umfeld kommen APIs h\u00e4ufig bei Online-Shops und Content-Management-Systemen zum Einsatz. Es k\u00f6nnen dadurch unterschiedliche Bezahldienstleister, Online-Marktpl\u00e4tze, 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\u00f6chte ich auf die Frage eingehen: Welche Vorteile ergeben sich nun durch die Verwendung von Programmierschnittstellen? &amp;nbsp; 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\u00fchrt werden k\u00f6nnen. Zudem sind die angebundenen Programme weniger fehleranf\u00e4llig und leichter wartbar, da modulare Programmcodes verwendet werden. Arbeiten einzelne Funktionen fehlerhaft, m\u00fcssen lediglich die betroffenen Module und die an der API \u00fcbergebenen Daten genauer gepr\u00fcft werden. &amp;nbsp; Ein weiterer Vorteil, dass sich aus einer sauber dokumentierten Programmierschnittstelle ergibt, ist die M\u00f6glichkeit der Auslagerung von Programmierarbeiten. Die Entwicklung einzelner Teilbereiche einer Software kann dank der Programmierschnittstelle mit geringem Aufwand an eine externe Softwareunternehmen oder freie Entwickler \u00fcbertragen werden. &amp;nbsp; Zudem k\u00f6nnen Drittanbieter selbst Funktionen f\u00fcr das System entwickeln. Dadurch steigert sich die Attraktivit\u00e4t und Flexibilit\u00e4t des Gesamtprodukts und es ergeben sich klare Wettbewerbsvorteile. Allerdings gibt es neben den genannten Vorteilen auch Nachteile: Um andere Anwendungen, Festplatten oder Benutzeroberfl\u00e4chen individuell anbinden zu k\u00f6nnen, braucht man Programmierkenntnisse. Hat man also keinen Entwickler im Unternehmen, muss man jemanden extern beauftragen. Au\u00dferdem ben\u00f6tigt das Entwickeln einer Anbindung Zeit. Kontakt: Ingo L\u00fccker, ingo.luecker@itleague.de ","author_name":"IT Manager Podcast (DE, german) - Aktuelle IT-Themen vorgestellt und diskutiert","author_url":"https:\/\/www.itleague.de","html":"<iframe title=\"Libsyn Player\" style=\"border: none\" src=\"\/\/html5-player.libsyn.com\/embed\/episode\/id\/12035264\/height\/90\/theme\/custom\/thumbnail\/yes\/direction\/forward\/render-playlist\/no\/custom-color\/88AA3C\/\" height=\"90\" width=\"600\" scrolling=\"no\"  allowfullscreen webkitallowfullscreen mozallowfullscreen oallowfullscreen msallowfullscreen><\/iframe>","thumbnail_url":"https:\/\/assets.libsyn.com\/secure\/item\/12035264"}