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

Golang und Kotlin im Vergleich

Programmiersprachen für cloud-native Anwendungen

Golang und Kotlin im Vergleich

Die beiden cloud-nativen Sprachen Go und Kotlin bringen ein ganzes Spektrum innovativer Features speziell für Microservices mit. Sie locken gegenüber althergebrachten Alternativen mit dem Versprechen, verteilte Anwendungsausführung auf ein neues Niveau leichtgewichtiger Elastizität zu heben. Entwickler von Cloud-Anwendungen haben jetzt wieder die Qual der Wahl. lesen

SaaS- und Cloud-Anwendungen erfordern moderne WAN-Konzepte

So läuft Microsoft Office 365 rund

SaaS- und Cloud-Anwendungen erfordern moderne WAN-Konzepte

Kommerzielle Software-as-a-Service Application Suites (SaaS) wie Microsoft Office 365 zählen zu den derzeit am weitesten verbreiteten SaaS-Anwendungen. Tatsächlich konnte Office 365 im Oktober 2019 die 200-Millionen-Marke an aktiven Nutzern knacken. Um so wichtiger wird eine stabile Verbindung in die Microsoft Cloud. lesen

Zentrale Plattform integriert SAP, Salesforce und Sharepoint

Bender digitalisiert mit Magic xpi

Zentrale Plattform integriert SAP, Salesforce und Sharepoint

Die wachsende Bedeutung einer sicheren Stromversorgung und der erwartete Boom bei der Mobilität für Elektro- und Hybridfahrzeuge sind positive Entwicklungen für die Bender Unternehmensgruppe. Voraussetzung für ein erfolgreiches Ausschöpfen und Bedienen der Kundennachfrage ist eine agile Unternehmensstruktur in allen Bereichen. lesen

ONLYOFFICE für weitere Open-Source-Tools

Integrationen mit Cloudron, kDrive, Nextcloud Hub, Plone, HumHub

ONLYOFFICE für weitere Open-Source-Tools

Für die Web-Office-Apps von ONLYOFFICE sind nun mit weitere Integrationen mit Open-Source-Plattformen und Diensten verfügbar. Zu diesen zählen: Cloudron, kDrive, Nextcloud Hub, Plone und HumHub. lesen

So verändert DevOps die Unternehmen

Kommentar zum State of Application Services (SOAS) Report

So verändert DevOps die Unternehmen

DevOps wird zunehmend zum neuen Standard in Unternehmen. Doch mit den integrierten Prozessen für IT-Betrieb und Entwicklung verändern sich auch Strukturen und Abläufe sowie der Umgang mit Anwendungen. lesen

Was ist Helm?

Definition: Paketmanager für Kubernetes und Cloud-native Apps

Was ist Helm?

Helm ist ein Incubating Project der Cloud Native Computing Foundation. Es handelt sich um einen Package-Manager für Kubernetes, der das automatisierte Installieren, Verwalten und Updaten auf Kubernetes basierender Anwendungen ermöglicht. Ziel ist es die Arbeit mit Kubernetes und Container-Umgebungen zu vereinfachen und komfortabler zu machen. lesen

Was ist Envoy?

Definition: Service- und Anwendungs-Proxy für Cloud-native Anwendungen

Was ist Envoy?

Envoy ist ein Graduated Project der Cloud Native Computing Foundation. Es handelt sich um einen Service-Proxy auf der Anwendungsebene (Layer 7), der speziell für Cloud-native Anwendungen und Microservices konzipiert ist. Er bietet unter anderem auch Loadbalancing-Funktionen und erlaubt die Realisierung eines Service Meshs. lesen

Optimal Systems überarbeitet yuuvis-Plattformen

Low Code, Cloud Native und Hybrid Development

Optimal Systems überarbeitet yuuvis-Plattformen

Ob als RAD-Plattform, Cloud-natives Produkt oder flexible Hybrid-Lösung: Mit der aktualisierten yuuvis-Produktfamilie will Optimal Systems die Entwicklung moderner, inhaltsbezogener Applikationen für Datenhaltung und Dokumentenmanagement vereinfachen. lesen

Cloud-DMS für mehr Effizienz im Büro

Dokumentenmanagement aus der Cloud

Cloud-DMS für mehr Effizienz im Büro

Papierlose Prozesse sind in vielen Firmen noch nicht der Standard. Doch moderne Dokumentenmanagementsysteme (DMS) aus der Cloud könnten das bald ändern. 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)