stecker

APIs als Grundstein der Softwareentwicklung

APIs sind der Grundstein der Softwareentwicklung und spätestens seit dem Aufkommen des Web 2.0 auch vielen Nicht-Technikern ein Begriff geworden. Doch da hört es oft auf. Was steckt wirklich hinter dem Begriff? Was genau sind APIs, und welche Bedeutung haben sie im Web? Dieser Artikel ist ein praxisnaher Erklärungsversuch und eine Zusammenfassung für alle Uneingeweihten, um künftig selbstbewusst mitreden und -entscheiden zu können.

Während die meisten noch wissen, dass sich hinter der Abkürzung „API“ der englischsprachige Begriff „Application Programming Interface“ (Programmierschnittstelle) verbirgt, so stapfen Nicht-Techniker dahinter meist arg im Dunkeln. Sowohl diese Tatsache, als auch die inflationäre und falsche Nutzung des Begriffs über die letzten Jahre mögen Ursache dafür sein, dass er zu einem waschechten Buzzword herangewachsen ist.

So wurden Web APIs zeitweise als Allheilmittel und Geheimwaffe einer jeden Website bepriesen, galten zu Web-2.0-Hochzeiten gar als einer jener Punkte auf dem Businessplan, die die Unternehmensbewertung um einige signifikante Prozente nach oben steigern konnte.

Nachdem sich diese anfängliche Euphorie mittlerweile etwas gelegt hat, werden wir hier nun mit Gerüchten und Legenden aufräumen, die wahren Chancen und Risiken aufzeigen und für etwas Durchblick im Dickicht der APIs sorgen.

Sinn und Zweck von Web APIs

Obwohl wir weiter unten zwischen verschiedenen Arten von APIs zu differenzieren lernen, haben sie doch alle eins gemein: Sie dienen zum Austausch und der Weiterverarbeitung von Daten und Inhalten zwischen verschiedenen Websites, Programmen und Anbietern, und ermöglichen so Dritten den Zugang zu vorher verschlossenen Datenpools und Benutzerkreisen. Durch die gemeinsame Nutzung dieser Inhalte können so ganz neue Dienste (zum Beispiel Desktop-Clients), Mehrwerte (wie Mash-Ups) oder gar ganze Ökosysteme – wie Application Stores – entstehen.

Grundlagen

Wie es dem Begriff bereits zu entnehmen ist, handelt es sich bei APIs ganz grundsätzlich um Schnittstellen. Eine Schnittstelle ermöglicht die Kommunikation und Interaktion zwischen zwei Systemen. Nahezu alles in unserer Welt besteht aus Schnittstellen: Stecker und Buchse dienen als Schnittstelle zur Übertragung von Strom, Tastatur und Finger bei der Benutzung eines Computers zur Übertragung von Gedanken in digitale Zeichen.

Auch in der Computerwelt wimmelt es nur so von Schnittstellen und APIs – sie bilden seit jeher den Grundstein von Betriebssystemen und Programmen. Wenn jedoch in Internetkreisen von APIs geredet wird, sind meistens sogenannte Webservice APIs oder Web APIs gemeint, also Schnittstellen für und von Websites und Webapplikationen. Obwohl wir uns in diesem Artikel vorrangig auf Web APIs beziehen, sind die meisten allgemeinen Fakten jedoch auch traditionellen APIs gemein.

User Interface vs. Application Programming Interface

Bei Websites und Programmen dient die visuelle Oberfläche, das sogenannte (Graphical) User Interface oder auch Frontend, als Schnittstelle zwischen dem Benutzer und der dahinterliegenden Softwarelogik, dem Backend. Das User Interface nimmt also Daten vom Benutzer entgegen, leitet diese zur Verarbeitung an die Software weiter, und gibt anschließend das Resultat wieder an den Benutzer zurück.

Der Begriff des User Interface ist längst nicht nur unter Technikern weit verbreitet und bekannt – er gilt als der allgemein bezeichnende Begriff für das Gesicht und die Oberfläche einer Software. Es wird dabei im Detail designed, im Web mittels Technologien wie HTML, CSS oder Flash umgesetzt und auf Usability hin optimiert. Jede im Browser dargestellte Website ist also zunächst ein User Interface, über das die Benutzer mit der eigentlichen Software interagieren.

api-vs-ui

Das Äquivalent zum für Menschen optimierten (menschenlesbaren) User Interface sind nun die für Software zugeschnittenen (maschinenlesbaren) Application Programming Interfaces, die im Grunde genommen einen klarer abstrahierten und strukturierten Zugriff auf die Funktionen des Backends ermöglichen. Darüber können Daten beispielsweise in einer besonders gut weiterverarbeitbaren und reduzierten Form ausgetauscht werden.

API-Design und Standards

Das alles bedeutet auch: Ebenso wie wir das Design einer Website entwerfen und gestalten, muss auch eine API konzipiert und gestaltet werden. Und da die Schnittstelle letztendlich zunächst von einem Menschen (einem Programmierer) implementiert und getestet werden muss, müssen wir optimalerweise auch noch eine für Menschen (oder zumindest für Programmierer) verständliche Dokumentation beilegen.

Insbesondere die drei letzteren Aspekte sind bereits durch eine handvoll etablierte Standards, sogennante Protokolle, definiert und standardisiert, aus denen man als API-Designer wählen sollte.

Zur Standardisierung der allgemeinen Struktur gibt es Protokolle wie SOAP, XML-RPC oder REST, die die Struktur – von links nach rechts – je nach Wahl strikt bis weniger strikt vorgeben. Während also SOAP ein sehr komplexer Standard ist, bietet das einfachere REST mehr Gestaltungsfreiraum. Aus diesem Grund gilt SOAP als Standard im Enterprise-Umfeld, während REST den Markt der öffentlichen Web APIs dominiert.

Für das Datenformat schließlich kommen meist Standards wie XML oder JSON zum Einsatz. Um wieder den Vergleich zu Websites zu ziehen: Sie stellen letztendlich das API-Äquivalent zu HTML dar.

Zur Differenzierung von Web APIs

Nachdem die Grundlagen geklärt sind, ist es sinnvoll zwischen verschiedenen Formen von Web APIs zu unterscheiden, um die dahinterliegenden Aspekte besser zu verstehen. In diesem Artikel unterscheiden wir zwischen vier verschiedenen Arten von Web APIs:

  • Interne APIs
  • Externe APIs
  • Plattform-APIs
  • Authentifizierungs- und Autorisierungs-APIs

Interne APIs – Modularisierung und SOA

soaStreng genommen ist in der Welt der Softwareentwicklung fast alles eine interne API. Je klarer die Abgrenzung von Code gegenüber anderen Modulen stattfindet, desto eher ist von einer wirklichen Schnittstelle zu reden. Interne APIs gehören zum guten Ton professioneller Softwareentwicklung und finden Einsatz, um Komponenten und Module der Software einerseits voneinander abzugrenzen und andererseits wieder miteinander zu verbinden. Das steigert die Modularität und verringert dadurch die Gesamtkomplexität.

Sogenannte Service-Orientated Architectures (SOA) gehen besonders weit, indem sie das Gesamtsystem in möglichst viele einzelne, unabhängige Teil-Systeme (Services) zerlegen, die untereinander zum Beispiel über Webservice APIs kommunizieren.

Gute Beispiele für ausgeprägte Modularisierung abseits der Softwareindustrie sind zum Beispiel in den Automobil- und PC-Industrien zu finden, die dafür mit vielfältigen Arbeitsteilungs-, Outsourcing- und Kombinationsmöglichkeiten belohnt werden.

Externe APIs – zum Beispiel Twitter, Flickr, YouTube

externe-apiWenn ganz allgemein von APIs geredet wird, sind meist externe APIs gemeint. Analog zur Darbietung bestimmter Funktionen gegenüber dem Benutzer über das User Interface, können diese und andere Funktionen auch über eine externe API ausgeführt werden. Das ist besonders interessant, um Inhalte weiterzuverarbeiten und Mash-Ups zu entwickeln. Ein typisches Beispiel ist das Versenden von Tweets über Desktop-Anwendungen wie TweetDeck, wo die externe Twitter-API zum Einsatz kommt.

Bekannte Beispiele für externe Web APIs neben Twitter sind  auch die von Flickr oder YouTube. Mit diesen können die Inhalte der Websites automatisiert ausgelesen, hinzugefügt oder verändert werden, was sich heute in unzähligenen frei verfügbaren Tools äußert.

Plattform-APIs – zum Beispiel Facebook, OpenSocial

plattform-apiPlattform-APIs bieten Schnittstellen zur Integration in eine andere Website oder Plattform. Damit können Dritte Applikationen oder Plug-Ins entwickeln und diese im Rahmen der Plattform betreiben. Hierzu bietet eine Plattform-API inbesondere Funktionen, mit denen das User Interface einer entwickelten Application in das User Interface der Plattform integriert werden kann, aber auch bestimmte Funktionen zum Zugriff auf Benutzerdaten (zum Beispiel den Namen des eingeloggten Nutzers oder die seiner Freunde) oder andere zentrale Funktionen der Plattform.

Bekannte Beispiele aus der Web-Welt sind die API von Facebook oder der OpenSocial-Standard für Plattform-APIs. Solche Websites werden auch als „Platform-Enabled Websites“ bezeichnet. Aber auch iPhone-, Android-, Windows-, Linux- oder Mac-Applikationen sind nur durch die Öffnung von Plattform-APIs möglich.

Authentifizierungs- und Autorisierungs-APIs

Weiterhin gibt es noch einen Sondertyp von Web APIs, die immer stärker an Bedeutung gewinnen: Schnittstellen zur Authentifizierung (Identifikation) und Autorisierung (Zugriffsrechtsgewährung) von Benutzern.

Bekannte Beispiele für die Authentifizierung sind etwa Facebook Connect, Google FriendConnect oder der OpenID-Standard, mit denen man sich den Aufbau eines eigenen User-Pools spart, indem sich die Nutzer über andere Plattformen einloggen. Dies nennt man dann auch Single Sign-On.

Im Bereich der Autorisierung hat sich der OAuth-Standard etabliert, über den der Nutzer festlegen kann, ob seine Daten Dritten über APIs zugänglich sind (beispielsweise ob eine externe Anwendung Tweets in seinem Namen posten darf).

Zusammenfassung

APIs sind aus der heutigen Web-Welt nicht mehr wegzudenken. Die zunehmende Öffnung gegenüber Drittanbietern ist eine der spannendsten Entwicklungen im Web, und wird Plattformen und Inhalte zu einem noch dichteren Netz miteinander verweben.

Rund um die effektive Entwicklung und Nutzung von APIs entsteht außerdem ein ganz eigenes Ökosystem: So bieten Anbieter wie Apigee beispielsweise umfangreiche Analyse- und Kontrollfunktionen für eigene Web APIs an.

GD Star Rating
loading...
Ein nicht-technischer Erklärungsversuch, 4.9 out of 5 based on 14 ratings
Alle Bilder in diesem Artikel unterliegen der Creative-Commons-Lizenz (Namensnennung-Keine Bearbeitung, CC BY-ND; Link zum rechtsverbindlichen Lizenzvertrag). Ausgenommen sind anders gekennzeichnete Bilder unter anderem von Panthermedia, Fotolia, Pixelio, Morguefile sowie Pressefotos oder verlagseigenes Bildmaterial.