APIs
APIs sind Programmierschnittstellen, die den Datenaustausch zwischen Systemen sowie den Zugang zu Datensammlungen erlauben.
Definition
Hinter der abstrakten Abkürzung API, was für Application Programming Interface steht, verbirgt sich der nicht weniger abstrakte Begriff der Programmierschnittstelle. Diese kann sich als eine Art Zugangsportal verstanden werden. Sie ermöglichen einen Datenaustausch und die -weiterverarbeitung zwischen zwei Systemen (wobei es sich in der Regel um Websites oder Programme handelt) und geben den Zugang zu ansonsten geschlossenen Datensammlungen frei.
Als Softwarebruchstück führt sie eine Applikation direkt an die Daten einer anderen heran und gewährt ihr Zugriff zu bestimmten Serverabschnitten. APIs kommen immer dann zum Einsatz, wenn ein Server unabhängig vom sogenannten User Interface, also der Benutzeroberfläche, erreichbar sein soll. Wie der Name schon sagt, ist also auch kein Benutzer nötig, sodass eine Maschine-zu-Maschine-Kommunikation stattfinden kann.
APIs können auf unterschiedlichste Art und Weise eingesetzt werden. Eine einfache Website muss keine API-Endpunkte haben, um zu funktionieren. Bei größeren Projekten hingegen sind meist APIs notwendig, die entweder eigene Daten abrufbar machen oder selbst Daten von Drittanbietern abrufen oder auch Anwendungen von Drittservern laufen lassen.
Im Allgemeinen sind APIs also Schnittstellen für diverse Dinge, im Sprachgebrauch sind aber meist Web-APIs gemeint. Eine Website besteht aus dem Code im Hintergrund, der eigentlichen Software, was als Backend bezeichnet wird. Das Frontend ist das für den Benutzer sichtbare, das User Interface, welches über einen Client, in der Regel ein Browser, angezeigt und aufgerufen werden kann. Statt über diesen Umweg der grafischen Oberfläche zu gehen, können APIs direkt mit dem Backend kommunizieren und Daten gezielter beziehen. Eine Website-Abfrage und eine API-Abfrage sind demnach identisch, lediglich die Antwort ist eine andere: Die Website antwortet mit dem Zusammenspiel aus HTML/CSS und Javascript und wird über den Browser angezeigt, APIs antworten mit den rohen Daten, die noch nicht für das Nutzererlebnis aufbereitet sind.
Dies geschieht nicht durch einen Nutzer, sondern durch ein zweites Softwaresystem. Genauso, wie das Frontend-Design erstellt werden kann, können auch APIs über Programmierung “designt” werden. Programmierer nutzen hierfür Protokolle.
Protokolle
Protokolle im Web-Kontext sind anders als im allgemeinen Sprachgebrauch nicht (nur) für die Dokumentation von Vorgängen zuständig, sondern vor allem für einen Übertragungsvorgang. Deshalb werden sie auch Netz- oder Übertragungsprotokolle genannt. Sie bestehen aus Regeln, der sogenannten Syntax (wie auch HTML eine Syntax ist), die das Kommunikationsverhalten zweier in Verbindung stehender Systeme festlegt. In ihrer Gesamtheit sind Protokolle also eine Sammlung an Anfragen (request messages) mit der entsprechenden Definition für die Antworten oder Aktionen darauf (response messages).
Das bekannteste Protokoll ist das Hypertext Transfer Protocol, kurz HTTP, welches die Basis für das World Wide Web mit seinem Netz aus Websites ist. Die HTT-Protokolle laden Websites, welche heruntergebrochen Hypertext-Dokumente sind, in den Browser. Dies ist an dem Anfang der Adresszeile im Browser am http:// zu erkennen. Darüber hinaus können sie auch allgemein als Dateiübertragungsprotokoll, beispielsweise in der Server-Kommunikation, verwendet werden.
Da es unterschiedliche Arten und Weisen gibt, wie die Kommunikationsregeln zwischen den beiden verbundenen Systemen festgelegt werden, gibt es dementsprechend auch unterschiedliche Arten von Protokollen. Die beiden gängigsten nennen sich SOAP und REST.
SOAP APIs
SOAP steht für Simple Object Access Protocol. Genauso wenig, wie dieser Name also etwas mit Seife zu tun hat, ist dieses Protokoll einfach zu bedienen (simple) noch ist es ausschließlich für Objekte (object) gedacht. Seit der abweichenden Bedeutung wird der Name also nicht mehr als Akronym, sondern eher als Markenname verwendet.
SOAP APIs sind sehr komplex in der Handhabung und eher für Projekte großer Unternehmen in der Enterprise-Größenordnung gedacht. Durch Webservice-Security-Standards bieten sie allerdings mehr Sicherheit als ReSTful APIs.
Eine SOAP-Message ist in der Regel ein Dokument in XML, das benutzt wird, um Daten zu übertragen. Während XML das häufigste Format ist, können auch Base64-(8-Bit-Binärdaten-Codierung) oder CSV-(Comma-separated values, ein Textdateiformat)Formatierungen vorkommen.
Normalerweise findet bei der Verwendung von Protokollen ein Übersetzungsvorgang statt, welcher durch Syntaxanalysen von sogenannten Parsern übernommen wird. Wenn in SOAP geschrieben wird, muss jedoch nicht mehr umgewandelt werden, weil meist bereits in Web Services Description Language, kurz WSDL, einer universalen und von Plattformen, Protokollen und Programmiersprachen unabhängigen Sprache, formatiert wird.
ReSTful APIs
REST ist die Abkürzung für Representational State Transfer und zugehörige APIs werden auch oft ReSTful APIs genannt. Streng genommen ist REST kein Protokoll, sondern ein Programmierparadigma, sozusagen ein Architekturstil. Insofern kann ein ReSTful API auch ein SOAP- oder andere Protokolle wie HTTP benutzen.
Der Einsatz von ReSTful APIs ist hauptsächlich im Bereich der Web-Anwendungen anzusiedeln. Da die meisten Web-Anwendungen beispielsweise HTT-Protokolle und Syntaxanalysen im HTML- oder XML-Format verwenden, sind sie naturgemäß REST-kompatibel. Sobald Websites jedoch dynamisch konfiguriert werden, z.B. durch ein Responsive Design, liegt nicht mehr nur ein simples HTT-Protokoll vor und die Daten sind nicht mehr so einfach automatisch zu verarbeiten, weil das Format ein anderes ist.
Die Verwendung von REST-APIs in der Programmierung folgt dem Schema, Anfragen über den sogenannten Header mit einem Befehl zu senden. Diese nennen sich Requests und können beispielsweise “Get”, “Post”, “Delete”, “Patch” oder “Put” beinhalten und adressieren Objekte mit einer ID im Singular oder Plural.
ReSTful APIs sind für Web-Anwendungen optimiert und sind für ihre gute Performance und einfache Skalierbarkeit bekannt.
Formatierungssyntax für Protokolle
Für die oben genannten Protokolle gibt es unterschiedliche Möglichkeiten, diese zu schreiben. Das Regelsystem für die Formatierung eines Protokolls oder codebasierten Objekten nennt sich Syntax.
XML
XML steht für Extensible Markup Language und ist eine plattformunabhängige Metasprache, die von Menschen und Maschinen lesbar ist. Sie ist weit verbreitet und für jegliche Strukturierung von Daten nutzbar, wird aber vor allem für Web Services wie z.B. RSS-Feeds oder SOAPs.
JSON
JSON, kurz für JavaScript Object Notation, ist eine Alternative Formatierungssyntax zu XML und wird häufiger von REST-APIs verwendet. Sie verwendet Befehle, die von Menschen lesbar sind, um Datenobjekte im Attributpaaren zu übertragen (z.B. Plural und ID).
WSDL
WSDL bedeutet Web Service Description Language und ist im Grunde eine XML-Notation. Sie kann unabhängig von der Plattform, der Programmiersprache oder dem Protokoll verwendet werden. Zumeist handelt es sich dabei um ein XML-Dokument, das benutzt wird, um festzulegen, wie die Art der Verbindung zum Web-Service aussehen und wie die Anfragen gestaltet werden sollen. WSDL wird oft in Kombination mit SOAP und XML verwendet. Beispielsweise kann eine SOAP-Anfrage und -Antwort gestellt werden und in WSDL wird hinterher der weitere Umgang mit dieser Antwort, also welche Handlung darauf folgt, festgelegt.
Anwendungsfälle von APIs
Interne APIs
Als intern gelten APIs, die nicht öffentlich zugänglich sind. In der Softwareentwicklung ist nahezu alles eine interne API und auch Website-Anfragen greifen darauf zurück. Sie können auch die Entwicklungsarbeit erleichtern: Wenn man mehrere Apps entwickelt, können die gleichen APIs verwendet werden, sogar dann, wenn für unterschiedliche Betriebssysteme wie iOS und Android oder sogar eine Web-App entwickelt wird.
Externe APIs
Wenn wir im allgemeinen Sprachgebrauch von APIs sprechen, meinen wir meist externe APIs. Externe APIs sind APIs, die von Drittservern für andere Anwendungen genutzt werden. Dies können Anwendungen sein, die auf dem eigentlichen Dienst basieren und diesen anders aufbereitet oder einen neuartigen Zugang dazu verschafft: Ein Beispiel dafür sind Dienste wie TweetDeck oder Tweetbot. Nutzt man Twitter über den Browser oder die originale App, greifen Algorithmen, die den Nutzern relevante Tweets anzeigen und personalisierte Werbung schalten. Tweetbot und Tweetdeck erlauben eine Neuorganisation der Inhalte, beispielsweise durch Befreiung von Werbung und einem chronologischen News-Feed, welcher durch die Rohdaten möglich ist, die durch APIs zur Verfügung gestellt werden.
Plattform-APIs
Plattform-APIs fungieren als Schnittstelle zur Integration in eine andere Website. Dies kann beispielsweise die Einbettung von YouTube- oder anderen Video-Playern oder einer Karte sein. Viele Unternehmen und Restaurants nutzen eine API von Google Maps oder anderen Navigationsdiensten, um den eigenen Standort als integrierte Karte auf der Website anzuzeigen. Die Verwendung von APIs von Versanddiensten wie z.B. DHL erlaubt eine Verfolgung des Versandstatus von dem Onlineshop aus, auf dem die Bestellung getätigt wurde.
Authentifizierungs-APIs
Mithilfe von Authentifizierungs-APIs können Login-Formulare in Websites und Apps eingebettet werden. Ein Beispiel dafür ist Facebook Connect: Viele Websites nutzen eine Facebook-API, um Nutzern eine Anmeldung auf ihrem Portal anzubieten. Auf diese Weise werden anstelle eines eigenen Nutzerverwaltungssystems die Login-Daten von Facebook verwendet und ein langwieriger Registrierungsprozess vermieden. Meist geht dies allerdings mit der Gewährung des Zugriffs auf die Nutzerdaten wie beispielsweise Kontakte einher.
Autorisierungs-APIs
Autorisierungs-APIs erlauben die Durchführung von automatischen Aktionen durch die API. Dies kann die Autorisierung für eine Aktion auf einem sozialen Netzwerk sein, wie beispielsweise ein Facebook-Post im Namen des Nutzers tätigen zu dürfen.
Eine andere Möglichkeit der Verwendung ist die Integration von Zahlungsdiensten in die eigene Website. Viele Onlineshops nutzen APIs, um beispielsweise die Bezahlung via Paypal oder Amazon anzubieten. In diesem, aber auch in anderen Fällen, wird häufig ein sogenanntes OAuth (Open Authorization) verwendet, ein offenes Protokoll, welches eine sichere API-Autorisierung garantiert. So können Drittanbieter im Namen des Nutzers Aktionen ausführen, sensible Daten wie Passwörter etc. werden aber nicht weitergegeben.
Aktuelle Entwicklungen und Zukunft von APIs
Interne APIs
In Unternehmen können durch interne APIs lange Kommunikationswege und redundante Daten vermieden werden. Außerdem können Daten mithilfe von synchronen APIs in Echtzeit aufgerufen und Prozesse automatisiert werden, was eine große Zeit- und damit Kostenersparnis für das Unternehmen bedeutet.
In der Webentwicklung gibt es seit einiger Zeit selbst bei semi-professionellen Websites den Trend, das Frontend vom Backend zu trennen, wobei beide nur über eine API kommunizieren. Dieser Trend wird sich weiter fortsetzen.
Externe APIs
Schon jetzt mehrt sich eine Öffnung von APIs für Dritte. Dadurch ergibt sich immer häufiger eine Zusammenarbeit von unterschiedlichen Websites und Anbietern, was eine stärkere Vernetzung der unterschiedlichen Dienste nach sich zieht.
Für Entwickler bedeutet die Möglichkeit der Einbindung von internen und Plattform-APIs eine Arbeitserleichterung.
Eine zunehmende Verwendung von APIs ist darüber hinaus komfortabel für Nutzer, da diesen die Oberflächen teilweise schon bekannt sind und bereits existierende Benutzerkonten genutzt werden können, was vor allem der Entwicklung zur vermehrten Verwendung von Mobilgeräten zuträglich ist.
APIs in der Programmierung bei TenMedia
TenMedia ist eine Agentur für Webentwicklung und Softwareentwicklung in Berlin. Seit 2011 bieten wir individuelle Softwarelösungen, entwickeln moderne und umfangreiche Apps sowie state-of-the-art Websites mithilfe modernster Technologien und Responsive Webdesign unter der Einbindung von APIs für eine hohe Funktionalität und Benutzerfreundlichkeit. Wir haben uns auf die Verwendung von ReSTful APIs spezialisiert.