Architektur
REST – Representational State Transfer
Diese Seite erklärt das REST-Architekturprinzip und dessen zentrale Richtlinien zur Gestaltung von Web-APIs.
Was ist REST?
REST beschreibt Richtlinien, wie Ressourcen (z. B. Datenobjekte) über eine einheitliche Schnittstelle angesprochen werden. REST ist zustandslos und nutzt standardisierte HTTP-Methoden wie GET, POST, PUT, DELETE.
REST ist kein Protokoll, sondern ein Architekturstil – konkretisiert wird er durch die Implementierung als RESTful API.
Architekturrichtlinien von REST
Eine REST-konforme API sollte folgende Prinzipien einhalten:
1. Client-Server-Prinzip
- Trennung von Benutzeroberfläche (Client) und Datenverarbeitung (Server)
- Vorteil: Unabhängige Weiterentwicklung beider Seiten
2. Zustandslosigkeit (Stateless)
- Jeder Request enthält alle Informationen zur Verarbeitung
- Der Server speichert keinen Client-Zustand (z. B. keine Sessions)
3. Cachebarkeit
- Antworten können als cachebar markiert werden
- Reduziert Serverlast und verbessert Performance
4. Einheitliche Schnittstelle (Uniform Interface)
- Konsistentes API-Design mit festen Regeln:
- Ressourcen über URIs zugänglich (/produkte/123)
- Verwendung standardisierter HTTP-Methoden
- GET: Ressource lesen
- POST: Ressource erstellen
- PUT: Ressource ersetzen
- PATCH: Ressource teilweise ändern
- DELETE: Ressource löschen
 
- Selbstbeschreibende Nachrichten (inkl. Medientyp, z. B. Content-Type: application/json)
 
- Ressourcen über URIs zugänglich (
5. Mehrschichtige Architektur (Layered System)
- Die Kommunikation erfolgt über eine definierte Zwischenschicht (z. B. API-Gateway, Proxy)
- Der Client weiß nicht, ob er direkt mit dem Server oder einem Zwischensystem spricht
6. Code-on-Demand (optional)
- Der Server kann ausführbaren Code liefern (z. B. JavaScript), der vom Client ausgeführt wird
Beispiel: RESTful API
Anfrage:
GET /api/produkte/42 HTTP/1.1
Host: shop.example.com
Accept: application/json
Antwort:
{
  "id": 42,
  "name": "Gaming-Maus",
  "preis": 59.99
}
Vorteile von REST
- Einfach zu verstehen und zu implementieren
- Skalierbar und flexibel
- Sprache und plattformunabhängig
- Ideal für moderne Web- und Mobile-Anwendungen