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

Multi-Cloud als Chance für eine DevOps-Kultur

Mit Containern das Konfliktpotenzial zwischen Entwicklung und Betrieb verringern

Multi-Cloud als Chance für eine DevOps-Kultur

Immer mehr Unternehmen führen Multi-Cloud-Strukturen ein. Die perfekte Gelegenheit für sie, zusätzlich DevOps in die eigenen Prozesse zu integrieren – und so zwei Fliegen mit einer Klappe zu schlagen. Denn DevOps und Multi Cloud ergänzen sich optimal. Nur gehen Unternehmen – meist sogar Traditionsfirmen – oft falsch an die Sache heran und scheitern mit beiden Projekten. lesen

Die aktuelle Roadmap der Cloud-Security-Zertifizierung

Standards für Interoperabilität und Datensicherheit

Die aktuelle Roadmap der Cloud-Security-Zertifizierung

Die Frage, wie europäische Cloud Service Provider (CSPs) künftig auf gemeinsame Standards hinsichtlich Datensicherheit usw. verpflichtet und verglichen werden können, wird sukzessive beantwortet. Zwei Arbeitsgruppen haben entsprechende Codes of Conduct (CoC) verabschiedet und auf der „European Cyber Security and Cloud Computing Conference 2018“ in Wien vorgestellt. lesen

Die vernachlässigte Lücke in der Container-Sicherheit

Container müssen Teil der Cloud-Strategie sein

Die vernachlässigte Lücke in der Container-Sicherheit

In diesem Jahr feiert die Open-Source-Software Docker bereits ihren sechsten Geburtstag. Mit Docker lassen sich Anwendungen in Containern isoliert betreiben, was die Bereitstellung von Anwendungen und den Datentransport erheblich vereinfacht. Oftmals vernachlässigt wird dabei allerdings die Container-Sicherheit. Viele Unternehmen behandeln diese viel zu oft getrennt von der Cloud. lesen

Azure Files – Verwaltete Freigaben in der Cloud

SMB-Zugriffe auf Dateifreigaben in Microsoft Azure

Azure Files – Verwaltete Freigaben in der Cloud

Mit Azure Files lassen sich Dateifreigaben in Microsoft Azure erstellen, auf die Anwender oder auch andere Ressourcen mit SMB zugreifen können. Azure Files benötigt keine virtuellen Server in der Cloud, sondern ist vollständig verwaltet. Die Daten lassen sich in lokale Rechenzentren synchronisieren. lesen

Was bedeutet LAMP?

Definition: LAMP - Linux, Apache, MySQL und PHP

Was bedeutet LAMP?

LAMP ist ein Akronym, das sich aus den Anfangsbuchstaben der Software Linux, Apache, MySQL und PHP zusammensetzt. Es handelt sich um eine Softwareumgebung für Serversysteme, mit denen sich statische oder dynamische Webinhalte zur Verfügung stellen lassen. LAMP-Systeme kommen auch als Entwicklungssysteme zum Einsatz. lesen

Das kann Azure Databricks

Spark as a Service

Das kann Azure Databricks

Microsoft stellt mit Azure Databricks eine Analyseplattform in Microsoft Azure zur Verfügung, die auf der bekannten Analysesoftware Apache Spark aufbaut. Bei der Entwicklung der Plattform haben die Entwickler von Spark mitgearbeitet. lesen

Nicht alles muss in die Cloud

Hybride Infrastrukturen

Nicht alles muss in die Cloud

Anwendungen und Prozesse verschwinden wieder aus der Cloud, um den Datenschutz zu verbessern, Kosten zu kontrollieren und die Abhängigkeit von Dienstleistern zu reduzieren. Damit sinken aber Flexibilität und Skalierbarkeit. Unternehmen können jedoch mit hybriden Lösungen das Beste aus beiden Welten nutzen. lesen

Disruptive Welle stärkt Public Cloud

IT-Anbieter müssen sich wandeln, Kunden mehr automatisieren

Disruptive Welle stärkt Public Cloud

2019 wird sich die nächste Welle disruptiver Technologien in der Praxis durchsetzen – sagt der Verband der Internetwirtschaft e.V. (eco). Als Enabler gelten dabei Cloud Computing und die API Economy. lesen

Kommunikation aus einer Hand für das Weltunternehmen Siemens

Unify Circuit bei der Siemens AG

Kommunikation aus einer Hand für das Weltunternehmen Siemens

Die Siemens AG verfügt nach einem der weltweit größten Collaboration-Rollouts über eine ganzheitliche Kommunikationsinfrastruktur für über 350.000 Mitarbeiter in sämtlichen Unternehmensbereichen. Die Collaboration-Lösung Circuit von Unify ersetzt die bisherigen UC-Lösungen und vereint Messaging, Audio- und Videokonferenzen sowie Screensharing in einer einzigen, intuitiv zu bedienenden Applikation. 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)