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

Was ist eine REST API?

| Autor / Redakteur: Dirk Srocke / Florian Karlstetter

Definition: REpresentational State Transfer (REST).
Definition: REpresentational State Transfer (REST). (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.

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.

Update: 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 einige Anwendungsbeispiele, wie der Aufbau einer REST API aussehen kann:

API Development mit 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. Schließlich zeigt das Werkzeug ü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 einige Anwendungsbeispiele, wie der Aufbau einer REST API aussehen kann:

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

SAP veröffentlicht Updates für Leonardo

Machine Learning und Analysen

SAP veröffentlicht Updates für Leonardo

Der Softwarekonzern SAP hat eine Reihe von Updates für seine Leonardo-Plattform veröffentlicht. Dazu zählen beispielsweise erweiterte Funktionen für SAP Leonardo Machine Learning und Optimierungen bei der SAP Conversational AI. lesen

Profitbricks setzt bei Object-Storage-Dienst auf Cloudian

Praxis: S3-kompatibler Cloudspeicher

Profitbricks setzt bei Object-Storage-Dienst auf Cloudian

Um der kundenseitig steigenden Nachfrage nach einer Lösung für die kostengünstige Speicherung großer und schnell skalierender Datenmengen zu begegnen entschied sich Profitbricks, sein bestehendes Angebot um eine Object-Storage-Lösung zu erweitern. Die Basis hierfür stellt Cloudians Speicherlösung Hyperstore. lesen

Für die Digitale Welt müssen Unternehmen agiler werden

IT-Modernisierung in der Digitalen Welt

Für die Digitale Welt müssen Unternehmen agiler werden

Die Digitalisierung treibt in allen Branchen massive Veränderungen voran. Nicht nur Produkte und Dienstleistungen haben zunehmend digitale Komponenten, sondern auch ganz neue Kombinationen lassen sich in der digitalen Welt mit wenig Aufwand umsetzen. So kommen durch Neueinsteiger viele Unternehmen zunehmend in Bedrängnis, ihren Kundenstamm mit ihren Angeboten und Dienstleistungen zu halten. lesen

Eine Cloud für die Videoproduktion

[Gesponsert]

Die Filmbranche zieht um

Eine Cloud für die Videoproduktion

Lange ist es her, dass Filme auf Zelluloid gebannt wurden – die Filmproduktion heute ist voll digital. Produzenten nutzen die Cloud, um ihr Material zu sichern und zu schneiden. Die Open Telekom Cloud hat sich als hervorragend geeignete Plattform dafür erwiesen. lesen

Cloud Computing: 20 ausgewählte Service-Anbieter

Virtualisierung

Cloud Computing: 20 ausgewählte Service-Anbieter

Immer mehr Unternehmen nutzen Rechenleistungen aus der Cloud. Der Artikel gibt einige praktische Tipps für die richtige Cloud Strategie sowie einen Überblick über ausgewählte Anbieter von Cloud Services. lesen

Steuerungsinstrumente für eine effektive Cloud

CLOUD 2018 Technology & Services Conference

Steuerungsinstrumente für eine effektive Cloud

Die Cloud ist da und entwickelt sich weiter. ProfitBricks-Chef Achim Weiss nennt vier Trends abseits der gängigen Branchen-Buzzwords und mögliche Antworten auf diese Herausforderungen. lesen

China – Das Land der begrenzten Möglichkeiten

Warum sind westliche Internetfirmen in China gescheitert? – Teil 1

China – Das Land der begrenzten Möglichkeiten

Google, eBay, Amazon und Uber haben eines gemeinsam: Sie wollten ihren Erfolg auch auf dem chinesischen Markt fortführen – und sind gescheitert. Die Gründe, warum sie im Reich der Mitte nie richtig Fuß fassen konnten, hat Prof. Feng Li von der Cass Business School der Universität London in einer umfassenden Studie erforscht. lesen

AWS zu Spot(t)-Preisen fast gratis nutzen

Kostengünstige Nutzung von Amazon Web Services

AWS zu Spot(t)-Preisen fast gratis nutzen

Auf dem AWS Summit 2018, der Anfang Juni in Berlin stattfand, erzählte Glenn Gore, der Chief Architect von Amazon Web Services, dass über 60 AWS-Services kostenlos zur Verfügung stünden und es zahlreiche Möglichkeiten gebe, die Abo-Gebühr für Services wie EC2 auf ein Zehntel des „Normalpreises“ zu senken. Diese verlockende Aussicht ist, wie eine Analyse zeigt, kein potentielles PR-Geflunker, sondern auf Euro und Cent nachprüfbar. lesen

Oracle Blockchain Cloud Service allgemein verfügbar

Sichere Transaktionen

Oracle Blockchain Cloud Service allgemein verfügbar

Der US-amerikanische Soft- und Hardwarehersteller Oracle hat seinen Blockchain Cloud Service nun allgemein verfügbar gemacht. Unternehmen sollen mit der Plattform künftig eigene Blockchain-Netzwerke aufbauen können. lesen

copyright

Dieser Beitrag ist urheberrechtlich geschützt. Sie wollen ihn für Ihre Zwecke verwenden? Infos finden Sie unter www.mycontentfactory.de (ID: 44692866 / Definitionen)