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 lesenPOST
: Ressource erstellenPUT
: Ressource ersetzenPATCH
: Ressource teilweise ändernDELETE
: 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