REST – Architekturprinzip für skalierbare Web-APIs

REST – Architekturprinzip für skalierbare Web-APIs: Effiziente, ressourcensparende Kommunikation mittels Referenzen und URLs für performante, leicht erweiterbare Schnittstellen.

Autor: Leandro Alegsa

Representational State Transfer (REST) ist ein Architekturstil für die Gestaltung verteilter Systeme und von Web-APIs. Er wurde formal in der Dissertation von Roy Fielding beschrieben und zielt darauf ab, die Effizienz, Skalierbarkeit und Wartbarkeit der Kommunikation zwischen Systemen zu erhöhen. Kernidee ist, Informationen als adressierbare Ressourcen bereitzustellen und bei Bedarf ihre Repräsentation abzurufen, anstatt vollständige Kopien ständig zu verteilen. Systeme, die nach diesen Prinzipien aufgebaut sind, werden häufig als „RESTful“ bezeichnet.

Ein einfaches, anschauliches Gegenbeispiel ist die traditionelle Heimkino-Sammlung: Um einen Film anzusehen, muss eine physische Kopie vorhanden sein. Das erzeugt Verschwendung und Verzögerungen beim Austausch neuer Titel. Das Video-Streaming ist das RESTful-Äquivalent dazu: Filme werden nicht lokal in großen Mengen vorgehalten, sondern über eine Referenz (z. B. Titel/URL) auf Abruf gestreamt. In ähnlicher Weise ist das World Wide Web das größte praktische Beispiel eines RESTful-Systems; physikalische Bibliotheken sind sein nicht-RESTful-Pendant. Statt Kopien zu verteilen, wird jeder Ressource eine URL zugewiesen und Inhalte über das Internet abgerufen, statt lokale Kopien von einem optischen Datenträger oder einer Festplatte zu lesen.

Auch im B2B‑Kontext ist REST nützlich: Zwei Unternehmen, die mehrere Gigabyte sich ständig ändernder Daten teilen, profitieren davon, statt vollständige Datenbank-Backups auszutauschen nur IDs oder URLs für einzelne Ressourcen bereitzustellen. So kann Firma A bei Bedarf gezielt die aktuellen Informationen zu einem Produkt von Firma B abrufen (z. B. Preis oder Verfügbarkeit), ohne ganze Datenbestände zu synchronisieren.

Grundprinzipien von REST

  • Ressourcenorientierung: Alles Wesentliche wird als Ressource mit einer eindeutigen Kennung (URI) behandelt. Ressourcen werden durch Repräsentationen (z. B. JSON, XML, HTML) übertragen.
  • Uniforme Schnittstelle: Ein schlichtes, standardisiertes Interface (üblich: HTTP-Methoden) trennt Client und Server und erleichtert Interoperabilität.
  • Statelessness (Zustandslosigkeit): Jede Anfrage vom Client an den Server enthält alle Informationen, die zur Verarbeitung nötig sind. Der Server speichert keine Sitzungszustände zwischen Anfragen, was Skalierung und Fehlertoleranz erleichtert.
  • Cachebarkeit: Antworten sollten, wo sinnvoll, als cachebar gekennzeichnet werden, um Latenz zu reduzieren und die Last zu verringern.
  • Layered System: Ein Netzwerk kann aus mehreren Schichten bestehen (z. B. Load Balancer, Zwischen-Caches, Gateways) ohne die Kommunikation zu beeinträchtigen.
  • Code on Demand (optional): Server können ausführbaren Code (z. B. JavaScript) an Clients liefern, um Funktionalität zur Laufzeit zu erweitern.
  • HATEOAS (Hypermedia as the Engine of Application State): Clients entdecken verfügbare Aktionen durch Hyperlinks in den Ressourcendarstellungen, statt sie hart zu codieren.

HTTP-Methoden und Idempotenz

  • GET — liest eine Ressource (sicher, sollte keine Seiteneffekte haben).
  • POST — erstellt eine neue Ressource oder führt eine nicht-idempotente Operation aus.
  • PUT — ersetzt oder legt eine Ressource an (idempotent: wiederholte Aufrufe führen zum selben Ergebnis).
  • PATCH — ändert partiell eine Ressource.
  • DELETE — entfernt eine Ressource (idempotent im Sinn, dass wiederholte DELETEs zum gleichen Endzustand führen).

Richtiges Verwenden dieser Methoden trägt entscheidend zur Klarheit, Vorhersagbarkeit und Skalierbarkeit einer API bei.

Leistung, Skalierbarkeit und Caching

REST fördert Skalierbarkeit durch Zustandslosigkeit und klare Trennung von Rollen. Caching (z. B. über HTTP-Header wie Cache-Control, ETag, Last-Modified) reduziert Serverlast und Latenz. Darüber hinaus ermöglichen Layered-Architekturen den Einsatz von Reverse Proxies, CDNs und Load Balancern, um Lasten zu verteilen.

Praktische Best Practices

  • Ressourcen als Substantive modellieren (z. B. /users/123/orders), nicht als Verben (/getUserOrders).
  • Verwende passende HTTP-Statuscodes (200, 201, 204, 400, 401, 403, 404, 409, 500) zur klaren Fehlerkommunikation.
  • Unterstütze Content Negotiation (z. B. application/json, text/html) und verwende klare Media Types.
  • Pagination, Filtering und Sorting anbieten, um große Listen effizient zu handhaben.
  • Dokumentation und Spezifikation (z. B. OpenAPI/Swagger) bereitstellen.
  • Rate Limiting und Caching-Strategien implementieren, um Missbrauch und Überlast zu verhindern.

Sicherheit und Versionierung

Sichere REST-APIs über TLS (HTTPS). Authentifizierung und Autorisierung werden häufig mit OAuth 2.0, OpenID Connect oder JWT realisiert. Bei Änderungen an API-Vertrag/Schema ist eine sinnvolle Versionierung wichtig (z. B. über Header, v1 im Pfad oder Content Negotiation), um Kompatibilität für Clients zu gewährleisten.

Typische Fehler und Grenzen

  • „Anything that speaks HTTP is RESTful“ ist ein Trugschluss — echte REST-APIs befolgen Prinzipien wie HATEOAS und eine einheitliche Schnittstelle.
  • RPC‑artige Endpunkte mit Aktionen als Pfade (z. B. /doSomething) untergraben Ressourcenkonzept und Interoperabilität.
  • Serverseitige Sitzungszustände brechen Skalierbarkeit.

Zusammenfassung

REST ist kein Protokoll, sondern ein Architekturstil mit klaren Prinzipien, die helfen, skalierbare, wartbare und performante Web-APIs zu entwerfen. Gut implementierte RESTful-APIs nutzen Ressourcen-URIs, die semantische Bedeutung der HTTP-Methoden, Statuscodes, Caching und (wo sinnvoll) Hypermedia. Richtig angewendet, erleichtert REST die Entwicklung verteilter Systeme und eignet sich sehr gut für Web‑ und Microservice‑Architekturen.

Fragen und Antworten

F: Was ist Representational State Transfer (REST)?


A: Representational State Transfer (REST) ist ein Software-Architekturstil, der für die Entwicklung des World Wide Web entwickelt wurde.

F: Wie werden Systeme genannt, die REST implementieren?


A: Systeme, die REST implementieren, werden als 'RESTful'-Systeme bezeichnet.

F: Wie kommunizieren Computersysteme über REST miteinander?


A: Bei der Verwendung von REST kommunizieren Computersysteme über HTTP-Anfragen miteinander.

F: Was wird bei REST dokumentiert?


A: REST dokumentiert eine Methode, mit der Computersysteme über HTTP-Anfragen miteinander kommunizieren können.

F: Wer hat den Software-Architekturstil Representational State Transfer (REST) entwickelt?


A: Der Software-Architekturstil Representational State Transfer (REST) wurde entwickelt, um die Entwicklung des World Wide Web zu begleiten.

F: Welche Art der Kommunikation wird bei REST verwendet?


A: REST verwendet HTTP-Anfragen für die Kommunikation zwischen Computersystemen.

F: Was ist der Zweck von Representational State Transfer (REST)?


A: Der Zweck von Representational State Transfer (REST) ist es, die Entwicklung des World Wide Web zu lenken und eine Möglichkeit für Computersysteme zu schaffen, über HTTP-Anfragen miteinander zu kommunizieren.


Suche in der Enzyklopädie
AlegsaOnline.com - 2020 / 2025 - License CC3