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

End-to-End Multi-Cloud-Management mit SD-WAN

Betriebsmodell Multi Cloud

End-to-End Multi-Cloud-Management mit SD-WAN

Für die meisten Unternehmen beginnt die Reise zu Cloud und Multi-Cloud mit Anwendungen. In der Regel bedeutet das, dass architektonische Entscheidungen im Rechenzentrum beginnen. Ging es bei der Multicloud in erster Linie darum, wo Anwendungen bereitgestellt bzw. konsumiert werden, könnte die Reise an der gleichen Stelle enden. Bei der Multi-Cloud geht es jedoch um mehr als nur die Verlagerung von Anwendungen. lesen

Container Orchestration Tools im Vergleich

Die Konsolidierung der Cloud

Container Orchestration Tools im Vergleich

Seit Docker das Licht der IT-Welt erblickte, haben Container die DevOps-Idee revolutioniert. Dazu bedarf es eines Container-Clusters nebst zugehöriger Verwaltungsinstrumente wie Google Kubernetes. Hier klären wir die Zusammenhänge von Containern, Docker, DevOps und Cloud-native Computing. lesen

AWS senkt Latenzzeiten am Edge, im Mobilfunk und in Local Zones

US-Kundenkonferenz von Amazon Web Services

AWS senkt Latenzzeiten am Edge, im Mobilfunk und in Local Zones

Amazon Web Services hat kürzlich auf seiner Kundenkonferenz AWS re:invent Ende 2019 in Las Vegas eine Reihe von neuen Services vorgestellt, die für Cloud Computing von Bedeutung sind. In erster Linie ist AWS bemüht, die Latenzzeit der Datenübertragung in Edge- und Local-Clouds zu verringern. lesen

Aufstieg der Cloud – Haben europäische Investoren das Potenzial unterschätzt?

Kommentar zu Cloud-Investitionen in den USA und Europa

Aufstieg der Cloud – Haben europäische Investoren das Potenzial unterschätzt?

Während US-amerikanische Investoren in den letzten 12 Monaten beträchtliche Summen in Cloud Technologie Unternehmen investiert haben, haben Europäer diesen Sektor bislang ignoriert. lesen

Die neuen Developer-Trends sind Cloud-native

Umfrage von GULP

Die neuen Developer-Trends sind Cloud-native

Der Boom der Hybrid- und Multi Cloud bringt viele neue Trends und Technologien hervor, die gerne unter dem Schlagwort „New Work“ zusammengefasst werden. Wesentliche Bestandteile sind die Cloud als Basis, Flexibilität und eine gewisse Do-it-yourself-Mentalität. lesen

Die Applikation der Zukunft kennt ihren Kontext

Flexibel, offen und hybrid

Die Applikation der Zukunft kennt ihren Kontext

Anwendungen liegen auf der Straße; man muss sie nur aufheben und über APIs einbinden. Oder etwa nicht? - Ganz und gar nicht, sagt der Gartner-Analyst Paul Saunders. Auch im Zeitalter der Programmierschnittstellen bräuchten die Unternehmen eigene Anwendungen. Allerdings andere als in der Vergangenheit. lesen

APIs garantieren Agilität und Flexibilität

Programmierschnittstellen als Wachstumsmotor

APIs garantieren Agilität und Flexibilität

Unternehmen setzten immer häufiger auf SaaS-Anwendungen mit spezialisierten Funktionen. Diese werden dann per API verknüpft, um einen Datenaustausch zu ermöglichen. Aber was gilt es dabei zu beachten? lesen

Salesforce stellt mehr KI für sprachgestütztes CRM vor

Dreamforce 2019 – Von Einstein bis Obama

Salesforce stellt mehr KI für sprachgestütztes CRM vor

Auf seiner Kundenkonferenz Dreamforce in San Francisco stellte der Cloud-gestützte CRM-Anbieter Salesforce sprachgesteuerte Apps und weitere Funktionen für die Integrationslösungen Customer 360 und MuleSoft vor. CEO Marc Benioff gab die Parole aus, möglichst viele Partner gewinnen zu wollen. lesen

Huawei macht aus Datenvirtualisierung ein Open-Source-Projekt

Daten finden, nutzen und immer wieder verwenden

Huawei macht aus Datenvirtualisierung ein Open-Source-Projekt

Huawei öffnet seine bisher proprietäre Datenvirtualisierungs-Engine „Hetu Engine“ und bietet sie als Open Source unter der Bezeichnung „open Hetu“ an. Der Startzeitpunkt ist für Juni 2020 geplant. 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)