Suchen

Definition „Representational State Transfer API“ Was ist REST API?

| Autor / Redakteur: Ilan_r_r / Stephan Augsten

Hinter REST API verbirgt sich der etwas sperrige Begriff „Representational State Transfer Application Programming Interface“. Diese Programmierschnittstelle orientiert sich den Paradigmen und dem Verhalten des World Wide Web und beschreibt einen Kommunikationsansatz zwischen Servern und Clients in Netzwerkumgebungen.

Als Programmierparadigma versteht sich REST API als Abstraktion der gesamten Struktur und des Verhaltens des World Wide Web.
Als Programmierparadigma versteht sich REST API als Abstraktion der gesamten Struktur und des Verhaltens des World Wide Web.
(Bild: OpenClipart-Vectors - Pixabay.com)

Das REST API wurde von Roy Fielding als Konzept parallel zu HTTP 1.1 entwickelt und erstmals im Jahr 2000 vorgestellt. Die erste Nennung dieser Programmierschnittstelle ist in der Dissertation von Roy Fielding mit dem Titel „Architectural Styles and the Design of Network-based Software Architectures“ zu finden.

REST versteht sich als eine Art Abstraktion der gesamten Struktur und des Verhaltens des World Wide Web selbst. Auch wollten die Entwickler mit REST einen (z. B. im Vergleich zu SOAP) völlig anderen Architekturstil schaffen, der den Anforderungen des modernen World Wide Web besser gerecht wird.

Da das Programmierparadigma von vornherein mit Blick auf die bestehenden Strukturen im Internet entwickelt wurde, ist es nicht weiter verwunderlich, dass der Großteil der für REST notwendigen Infrastruktur bereits im Word Wide Web vorhanden ist. Viele beziehungsweise sogar die meisten Web-Dienste sind dementsprechend mit REST kompatibel. AWS, VMware, Azure und andere Cloud-Anbieter setzen fast ausschließlich auf REST.

Die sechs Architekturprinzipien von REST

Die REST-Schnittstelle legt nicht exakt fest, nach welchen Kriterien die einzelnen Web-Dienste im Detail implementiert werden können. Die Spezifikation beschreibt allerdings sechs unterschiedliche Architekturprinzipien, die für konforme Services notwendig sein müssen:

  • Ein Client-Server-Modell: REST verlangt eine klare Trennung von Nutzerinterface und Datenhaltung. Hinzu kommt, dass sich Clients somit leichter an verschiedene Umgebungen und Plattformen anpassen lassen, während die Server einfacher zu skalieren sind.
  • Zustandslosigkeit: Client und Server müssen zwingend zustandslos miteinander kommunizieren können. Das bedeutet, dass bei allen Anfragen eines Clients alle relevanten Informationen vom Client geliefert werden müssen. Server können somit auf keinen vorher gespeicherten Kontext zurückgreifen. Das macht das System enorm zuverlässig und flexibel, geht aber zu Lasten der Netzwerkgeschwindigkeit und der Client-Kontrolle.
  • Caching: Informationen können als cacheable oder non-cacheable klassifiziert werden. Somit können Clients Daten und Antworten des Servers speichern und bei weiteren Requests auf diese zurückgreifen. Der Vorteil liegt in der sehr schnellen Antwortgeschwindigkeit und einer höheren Netzwerkgeschwindigkeit, die Gefahr darin, dass Clients veraltete Daten aus dem Cache abrufen.
  • Einheitliche Schnittstelle: Die Schnittstellen müssen REST-Konform sein und müssen somit von vielen verschiedenen Endgeräten aus nutzbar gemacht werden können. Die standardisierten Schnittstellen bieten eine vereinfachte Architektur, leider oftmals auf Kosten der Geschwindigkeit, wenn Daten und Informationen auf ein bestimmtes Format umgewandelt werden müssen.
  • Layered Systems: Die REST API setzt auf mehrschichtige und hierarchisch aufgebaute Systeme, welche streng voneinander abgegrenzt sind. Dies sorgt für eine erhöhte Sicherheit, geht oftmals aber auf Kosten höherer Latenzen und eines größeren Overheads.
  • Code on Demand: Die Funktionen von Clients müssen über nachladbare und ausführbare Programmteile erweitert werden können.

(ID:45033049)