Definition: Representational State Transfer (REST) Application Programming Interface (API)

Was ist eine REST API?

| Autor / Redakteur: Dirk Srocke / Florian Karlstetter

REST steht für REpresentational State Transfer, API für Application Programming Interface - beides dient der M2M-Kommunikation.
REST steht für REpresentational State Transfer, API für Application Programming Interface - beides dient der M2M-Kommunikation. (Bild: gemeinfrei (geralt / pixabay) / CC0)

REST steht für REpresentational State Transfer, API für Application Programming Interface. Gemeint ist damit ein Programmierschnittstelle, die sich an den Paradigmen und Verhalten des World Wide Web (WWW) orientiert und einen Ansatz für die Kommunikation zwischen Client und Server in Netzwerken beschreibt.

Der als REST (oder auch ReST) bezeichnete Architekturansatz beschreibt, wie verteilte Systeme miteinander kommunizieren können. In diesem Sinne stellt eine REST API eine Alternative zu anderen Schnittstellen wie SOAP oder WSDL dar. REST selbst ist dabei allerdings weder Protokoll noch Standard. Als „RESTful“ charakterisierte Implementierungen der Architektur bedienen sich allerdings standardisierter Verfahren, wie HTTP/S, URI, JSON oder XML.

Machine to Machine-Kommunikation: egal ob HTTP/S, URI, JSON oder XML, auch Software muss miteinander reden – REST API´s stellen auf Basis einer standardisierten Architektur einen unentbehrlichen Bestandteil verteilter IT-Systeme dar.
Machine to Machine-Kommunikation: egal ob HTTP/S, URI, JSON oder XML, auch Software muss miteinander reden – REST API´s stellen auf Basis einer standardisierten Architektur einen unentbehrlichen Bestandteil verteilter IT-Systeme dar. (Bild: gemeinfrei (Lorenzo Cafaro / pixabay) / Pixabay)

Roy Fielding hat das Konzept parallel zu HTTP 1.1 entwickelt und 2000 in seiner Dissertation „Architectural Styles and the Design of Network-based Software Architectures“ vorgestellt. Dem entsprechend wundert es wenig, dass das World Wide Web bereits einen Großteil der für REST nötigen Infrastruktur liefert und zahlreiche Web-Dienste per se REST-konform sind. Hierzu zählen beispielsweise Online-Dienste, die statische Seiteninhalte per HTTP anbieten. Für die maschinelle Weiterverarbeitung liefern Server Information dabei allerdings häufig nicht als HTML-Dokument oder JPEG-Bild aus, sondern per JSON (JavaScript Object Notation) oder XML – die Formate repräsentieren die ursprünglichen Rohdaten und müssen nicht zwingend deren Format gleichen.

Sechs Architekturprinzipien

REST legt nicht im Detail fest, wie konforme Services im Detail implementiert werden. Vielmehr setzt der Ansatz folgende sechs Architekturprinzipien („Constraints“) voraus:

  • Client-Server-Modell: REST verlangt ein Client-Server-Modell, will also das Nutzerinterface von der Datenhaltung getrennt sehen. Damit sollen sich Clients einerseits leichter auf verschiedenen Plattformen portieren lassen; vereinfachte Serverkomponenten sollen andererseits besonders gut skalieren.
  • Zustandslosigkeit: Client und Server müssen zustandslos („stateless“) miteinander kommunizieren. Das bedeutet: Jede Anfrage eines Clients beinhaltet alle Informationen, die ein Server benötigt; Server selbst können auf keinen gespeicherten Kontext zurückgreifen. Dieses Constraint verbessert damit Visibilität, Zuverlässigkeit und Skalierbarkeit. Hierfür nimmt REST jedoch Nachteile bei der Netzwerkperformanz in Kauf; überdies verlieren Server die Kontrolle über ein konsistentes Verhalten der Client-App.
  • Caching: Um die Netzwerkeffizienz zu verbessern, können Clients vom Server gesendete Antworten auch speichern und bei gleichartigen Requests später erneut verwenden. Die Informationen müssen dem entsprechend als „cacheable“ oder „non-cacheable“ gekennzeichnet werden. Die Vorteile responsiverer Anwendungen mit höherer Effizienz und Skalierbarkeit werden dabei mit dem Risiko erkauft, dass Clients auf veraltete Daten aus dem Cache zurückgreifen.
  • Einheitliche Schnittstelle: Die Komponenten REST-konformer Services nutzen eine einheitliche, allgemeine und vom implementierten Dienst entkoppelte Schnittstelle. Ziel des Ganzen sind eine vereinfachte Architektur und eine erhöhte Visibilität von Interaktionen. Dafür nimmt man eine schlechtere Effizienz in Kauf, wenn Informationen in ein standardisiertes Format gebracht – und nicht für die Bedürfnisse spezieller Anwendungen angepasst – werden.
  • Layered System: REST setzt auf mehrschichtige, hierarchische Systeme („Layered System“) – jede Komponente kann ausschließlich jeweils direkt angrenzende Schichten sehen. Somit lassen sich beispielsweise Legacy-Anwendungen kapseln. Als Load Balancer agierende Vermittler („Intermediaries“) können überdies die Skalierbarkeit verbessern. Als Nachteile dieses Constraints gelten ein zusätzlicher Overhead und erhöhte Latenzen.
  • Code-On-Demand: Dieses Constraint fordert, dass die Funktionen von Clients über nachlad- und ausführbare Programmteile erweitert werden können – etwa in Form von Applets oder Skripten. Als optionales Constraint kann diese Bedingung in bestimmten Kontexten jedoch deaktiviert sein.

Umsetzung per HTTP

Das REST-Paradigma wird in der Praxis bevorzugt per HTTP/S realisiert. Services werden per URL/URI angesprochen. Die HTTP-Methoden (GET, POST, PUT,...) geben an, welche Operation ein Dienst ausführen soll.

GET | POST | PATCH | DELETE - REST in der Praxis

Da das World Wide Web schon die für REST nötige Infrastruktur liefert, kann man bereits per Browser erste Gehversuche mit entsprechenden Schnittstellen machen. Einen möglichen Einstieg hierfür liefert beispielsweise die unter http://jsonplaceholder.typicode.com/ verfügbare Fake Online REST API for Testing and Prototyping.

Die Lösung erlaubt den Zugriff auf eine Reihe miteinander in Beziehung stehender Datensätze. Die gewünschte Ressource sowie eventuelle Parameter werden jeweils nach dem Slash an die URL angehängt. Zu den angebotenen Ressourcen zählen 100 Posts, 500 Kommentare, 100 Alben, 5.000 Fotos, 200 Todo-Listen und 10 Nutzer. Die unterstützten HTTP-Methoden lauten:

  • GET - fordert Daten vom Server an
  • POST - übermittelt Daten an den Server
  • PUT/PATCH - ändern bestehende Daten auf dem Server
  • DELETE - löscht bestehende Daten auf dem Server

Tatsächlich dürfen Nutzer über das zu Demozwecken aufgesetzte REST API freilich keine Daten verändern oder löschen. Entsprechende Anforderungen lässt der Server ins Leere laufen – Interessierte können also nach Herzenslust herumprobieren und müssen nicht fürchten, dabei etwas kaputt zu machen.

Es spricht also wenig dagegen, guten Mutes den Webbrowser seiner Wahl zu starten und per GET Daten von einem Server anzufordern – nichts anderes passiert nämlich, wenn man eine URL in die Adresszeile eingibt und im Gegenzug eine Webseite erhält. Bittet man nun aber http://jsonplaceholder.typicode.com/posts um Daten, liefert das Angebot bereits eine recht umfassende Liste fiktiver Posts. Mit dem Firefox-Browser lassen sich die wenig ansehnlichen JSON-Daten übrigens übersichtlich darstellen: Einklappbar und farbig formatiert.

In der Bildergalerie finden sich Anwendungsbeispiele, wie der Aufbau einer REST API aussehen kann:

API Development mit Postman

Postman, ein weitverbreitetes API Development Environment (ADE).
Postman, ein weitverbreitetes API Development Environment (ADE). (Bild: Postman)

Noch mehr Möglichkeiten bietet indes das API Development Environment (ADE) Postman. Das Tool läuft auf verschiedenen Plattformen (Windows, macOS, Linux und ChromeOS) und lässt sich in der Einstiegsversion kostenlos nutzen.

Wie beim Browser auch gibt es bei Postman wieder eine Art Adressleiste, über welche Daten per URL angefordert werden können. Anders als die zuvor angesprochenen Browser ist die Software freilich komplett als Entwicklungsumgebung ausgerichtet und bietet dementsprechend deutlich umfassendere Möglichkeiten zur Datenmanipulation. Aber eins nach dem anderen.

So bietet es sich auch bei Postman an, zunächst die zuvor per Browser verschickte Anfrage einzugeben. Die links angezeigte Methode GET ist standardmäßig aktiv, ein Klick auf Send liefert die angeforderte Liste am unteren Bildschirmrand. Die formatiert Postman auf Wunsch – neben reinem Text kennt das Programm auch die Formate JSON, XML und HTML. Zusätzlich erfahren Nutzer Details zu Serverstatus, Dauer der Abfrage und Größe des empfangenen Dokumentes. Zusätzlich zeigt das Werkzeug auch übermittelte Cookies und Headers an.

Wer auf den Button Params rechts neben der Adressleiste klickt, kann die Abfrage weiter verfeinern. Nutzt man als Key etwa den Schlüssel „UserId“ und als Value den Wert „3“ liefert die nächste Abfrage ausschließlich die Beiträge des Nutzers „3“. Auch wer sich hinter dieser nichtssagenden Nummer verbirgt, lässt sich herausfinden: Die bereits um den entsprechenden Parameter ergänzte und damit auch für Webbrowser nutzbare Abfrage hierfür lautet http://jsonplaceholder.typicode.com/users?id=3 und liefert den Datensatz einer gewissen „Clementine Bauch“ mit dem unpassenden username „Samantha“. Wöllten wir diesen ändern wäre PATCH die Methode der Wahl. Per Klick auf GET lässt sich in Postman die Methode ändern, entsprechend angepasste Parameter liefern die folgende PATCH-Anforderung: http://jsonplaceholder.typicode.com/users?id=3&username=Clementine – diese quittiert die Fake API allerdings mit Status 404; gleiches passiert übrigens auch beim Versuch, den Datensatz per Delete zu löschen.

Nicht zuletzt lassen sich REST APIs natürlich auch direkt per Code ansteuern. Als Beispiel haben wir PHP gewählt, um per cURL-Bibliothek eine Verbindung zum Server herzustellen und nach Posts des mittlerweile vertrauten Nutzers Nummer 3 – aka Clementine – zu suchen. Per json_decode werden die zurückgelieferten Daten zu einem entsprechenden Array konvertiert und schließlich ausgegeben. Das Ergebnis ist in der Bildergalerie zu sehen.

<?php

//Verbindung zum Server definieren

$verbindung = curl_init();

curl_setopt($verbindung, CURLOPT_URL, "http://jsonplaceholder.typicode.com/posts?userId=3");

curl_setopt($verbindung, CURLOPT_RETURNTRANSFER, true); // Daten als String zurueckliefern

//Daten abrufen

$antwort = curl_exec($verbindung);

//JSON decodieren

$daten = json_decode($antwort, true);

//Jeden Eintrag samt Nummer anzeigen

foreach ($daten AS $eintrag) {

print ($eintrag['id'].": ".$eintrag['title']."\n");

}

//Verbindung schliessen

curl_close($verbindung);

?>

In der Bildergalerie finden sich gängige Anwendungsbeispiele, wie der Aufbau einer REST API aussehen kann:

Mehr Know-how: die wichtigsten Begriffe rund um Cloud Computing, verständlich erklärt im Special „Definitionen“

Microservices, Cloud Native, REST API , Kubernetes & Co.: Cloud Computing Wiki

Definitionen rund um Cloud ComputingVon AWS bis XaaS: Alle relevanten Schlagworte aus dem Bereich Cloud Computing finden Sie verständlich erklärt in unseren Definitionen. Ganz im Sinne eines kleinen, aber feinen Glossars lesen Sie hier neutral verfasste und leicht nachvollziehbare Erklärungen zu den wichtigsten Begriffen. Als Service für Sie haben wir die im Special gesammelten Definitionen auch direkt mit den zugehörigen Lexikoneinträgen verlinkt. So können Sie die wichtigsten Begriffe direkt dort nachschlagen, wo sie im Text auftauchen.  

Zum Special: Definitionen rund um Cloud Computing

Was ist JSON?

Definition: das Datenaustauschformat JavaScript Object Notation

Was ist JSON?

20.04.18 - Bei JSON (JavaScript Object Notation) handelt es sich um ein Textformat zum Austausch von Daten. Es ist einfach zu erlernen und zu lesen. JSON basiert auf der JavaScript-Sprache. Das Format konkurriert beim Austausch strukturierter Daten mit XML, besitzt aber wesentlich weniger Möglichkeiten. lesen

Kommentare werden geladen....

Kommentar zu diesem Artikel abgeben

Der Kommentar wird durch einen Redakteur geprüft und in Kürze freigeschaltet.

Anonym mitdiskutieren oder einloggen Anmelden

Avatar
Zur Wahrung unserer Interessen speichern wir zusätzlich zu den o.g. Informationen die IP-Adresse. Dies dient ausschließlich dem Zweck, dass Sie als Urheber des Kommentars identifiziert werden können. Rechtliche Grundlage ist die Wahrung berechtigter Interessen gem. Art 6 Abs 1 lit. f) DSGVO.
  1. Avatar
    Avatar
    Bearbeitet von am
    Bearbeitet von am
    1. Avatar
      Avatar
      Bearbeitet von am
      Bearbeitet von am

Kommentare werden geladen....

Kommentar melden

Melden Sie diesen Kommentar, wenn dieser nicht den Richtlinien entspricht.

Kommentar Freigeben

Der untenstehende Text wird an den Kommentator gesendet, falls dieser eine Email-hinterlegt hat.

Freigabe entfernen

Der untenstehende Text wird an den Kommentator gesendet, falls dieser eine Email-hinterlegt hat.

Aktuelle Beiträge zu diesem Thema

Managed Document Services als Basis der Cloud-Strategie

Druck- und Dokumentenmanagement

Managed Document Services als Basis der Cloud-Strategie

Managed Document Services und intelligente Multifunktionssysteme fungieren als zentrale Schnittstelle für die Digitalisierung von papierbasierten Informationen. Damit bilden sie die Basis für Cloud-Strategien, bei denen das digitale und mobile Arbeiten im Vordergrund steht. lesen

Erste Schritte mit dem AWS Security Hub

Compliance-Checks automatisiert durchführen

Erste Schritte mit dem AWS Security Hub

In Entwicklungsumgebungen, in denen schnelle und häufige Deployments die Regel sind, schleichen sich leicht unbemerkt Fehler in den Code. Der AWS Security Hub ermöglicht automatisierte Compliance-Checks und liefert aggregierte Informationen zu einer Reihe von Cloud-Services. lesen

Updates bei Hitachi Vantara und HEC

Consulting, Cloud-Migration und Anwendungsmodernisierung

Updates bei Hitachi Vantara und HEC

Mit einem neu formierten Cloud-Portfolio verspricht Hitachi vollständig gemanagte Services für Private- und Public-Cloud-Ressourcen. Hierbei gibt es Updates bei Hitachi Vantara und Enterprise Cloud. lesen

Wie KI effiziente Prozesslandschaften ermöglicht

Abläufe zwischen Standardisierungswahn und Wildwuchs

Wie KI effiziente Prozesslandschaften ermöglicht

Prozesse sind keine starren Gebilde, sie entwickeln sich laufend weiter. Mit der Gefahr, dass Varianten und Ausnahmen wild ins Kraut schießen. Um die Effizienz zu verbessern, setzen manche Unternehmen auf einen radikalen Rückschnitt ihres Prozessgeflechts. Ein Beispiel aus dem Einkauf zeigt, dass starre, einheitliche Prozesse das Wachstum auch behindern können. lesen

Vertrauliche Daten in der Cloud schützen

Datentresor von Microsoft OneDrive nutzen

Vertrauliche Daten in der Cloud schützen

Mit dem „Datentresor“ stellt Microsoft einen neuen, geschützten Speicherbereich in OneDrive zur Verfügung. Der Zugriff wird über eine eigene Anmeldung geschützt. lesen

Multi-Cloud-Management richtig gemacht

Strategie für die Hybrid Cloud

Multi-Cloud-Management richtig gemacht

In unserer Branche ist „Multi Cloud is the New Normal" längst ein geflügeltes Wort. Denn bereits heute nutzen 85 Prozent der Unternehmen Multi-Cloud-Umgebungen. In naher Zukunft wird diese Zahl auf nahezu 100 Prozent steigen. lesen

Cloud Foundry: Infrastrukturagnostische Bereitstellung Cloud-nativer Microservices

(Zurück) zu VMware, hin zu Kubernetes

Cloud Foundry: Infrastrukturagnostische Bereitstellung Cloud-nativer Microservices

Das Lifecycle-Management verteilter Anwendungen könnte wohl kaum noch komplexer werden. Applikationen schneller bauen, testen, skalieren und infrastrukturagnostisch bereitstellen: Genau diese Versprechen hat sich das quelloffene Projekt Cloud Foundry auf die Fahnen geschrieben. lesen

Rückschritte und Lichtblicke bei Security

Wachsende Abhängigkeit, niedriges Sicherheitsbewusstsein

Rückschritte und Lichtblicke bei Security

Unternehmen werden immer abhängiger von Cloud-Anbietern und geben auch in Sachen Sicherheit oft die Kontrolle ab. Das legen von Thales vorgelegte Umfrageergebnisse nahe. Im Ländervergleich sorgt Deutschland allerdings für einige Lichtblicke. lesen

Native Cloud-Lösungen zunehmend im Fokus

Interview mit Christian Zöhrlaut von Sage

Native Cloud-Lösungen zunehmend im Fokus

Vor einem Jahr hatte CEO Steve Hare mitgeteilt, Sage als reine SaaS-Company positionieren zu wollen. Im Interview erläutert Christian Zöhrlaut von Sage, inwieweit dies umgesetzt werden konnte. Mittlerweile geraten zudem zunehmend Native Cloud-Lösungen ins Visier. lesen

copyright

Dieser Beitrag ist urheberrechtlich geschützt. Sie wollen ihn für Ihre Zwecke verwenden? Kontaktieren Sie uns über: support.vogel.de/ (ID: 44692866 / Definitionen)