RESTful Design-Prinzipien
Dieser Beitrag ist eine Begriffserklärung zu RESTful Design-Prinzipien – inklusive Prüfungsfragen und Tags.
In a Nutshell
REST ist ein Architekturansatz für APIs, der auf HTTP basiert und durch klar definierte Methoden, Ressourcen, Statuscodes und Zustandslosigkeit besticht.
Kompakte Fachbeschreibung
REST ist ein leichtgewichtiges, auf HTTP basierendes Protokoll für den Austausch von Ressourcen zwischen Client und Server. Es nutzt die HTTP-Methoden: GET (Lesen), POST (Erstellen), PUT (Ersetzen), DELETE (Löschen), PATCH (Teilaktualisierung). REST folgt dem Prinzip der Statelessness, was bedeutet, dass jeder Request alle nötigen Informationen enthalten muss, der Server speichert keine Sitzungsdaten. Idempotenz spielt eine wichtige Rolle: GET, PUT und DELETE sind idempotent (mehrfache Ausführung hat dieselbe Wirkung), POST und PATCH sind es nicht. REST verwendet standardisierte Statuscodes (z.B. 200 OK, 201 Created, 404 Not Found, 500 Server Error) zur Kommunikation von Ergebnissen.
Prüfungsrelevante Stichpunkte
- GET, POST, PUT, DELETE, PATCH: HTTP-Methoden für CRUD
- REST ist zustandslos – kein Session-Tracking auf Serverseite
- Idempotenz: Wiederholte Requests wirken nur einmal (z.B. bei PUT)
- Ressourcenorientierte URIs, z.B. /api/users/123
- Nutzung von HTTP-Statuscodes (200, 201, 404, 500 etc.)
- PATCH aktualisiert nur Teile eines Objekts
- Sicherheitsaspekte: Authentifizierung per Token, HTTPS, CORS
- Dokumentation der Schnittstellen mit OpenAPI oder Swagger
Kernkomponenten
- HTTP-Methoden (GET, POST, PUT, DELETE, PATCH)
- URI-Konventionen (ressourcenbasiert)
- Statuscodes (2xx, 4xx, 5xx)
- REST-Konformität (Richardson Maturity Model)
- Idempotenz-Regeln
- Stateless-Architektur
- Content Negotiation (Accept-/Content-Type-Header)
- JSON/XML als Datenformate
- Authentifizierung (Bearer Token, API Keys)
- OpenAPI/Swagger-Dokumentation
Praxisbeispiel
// Beispiel: REST-API zur Benutzerverwaltung
GET /users → Liste aller Nutzer
POST /users → Neuen Nutzer erstellen
GET /users/1 → Nutzer mit ID 1 anzeigen
PUT /users/1 → Nutzer vollständig ersetzen
PATCH /users/1 → Nur bestimmte Felder aktualisieren
DELETE /users/1 → Nutzer löschen
Erklärung: Jede Methode entspricht einer klar definierten Aktion auf einer Ressource. Die URI bleibt konstant, die Methode ändert die Semantik.
Vorteile und Nachteile
Vorteile
- Einfach, leicht verständlich
- Nutzt Standardprotokolle (HTTP)
- Plattform- und sprachunabhängig
- Gut skalierbar
Nachteile
- Kein eingebautes Session-Management
- Kann ineffizient bei vielen API-Aufrufen sein
- Keine Standardisierung für komplexe Operationen
Typische Prüfungsfragen (mit Kurzantwort)
- “Stateless” bei REST? Server speichert keine Sitzungsdaten – jeder Request muss vollständig sein.
- Idempotente HTTP-Methoden? GET, PUT, DELETE.
- Unterschied PUT vs. PATCH? PUT ersetzt ein Objekt vollständig, PATCH ändert nur bestimmte Felder.
- Statuscode 201? Ressource erfolgreich erstellt.
- REST vs. SOAP? REST ist leichtgewichtig, nutzt HTTP direkt, SOAP ist XML-basiert und schwergewichtig.
- Ressource adressieren? Durch URI, z.B. /users/123.
- Sicherheitsmaßnahmen bei REST-APIs? HTTPS, Token-Authentifizierung, Zugriffskontrolle.
- Warum Idempotenz wichtig? Wiederholungen bei Netzwerkausfällen haben keine unbeabsichtigten Folgen.
Wichtigste Quellen
- https://learn.microsoft.com/en-us/azure/architecture/best-practices/api-design
- https://developer.mozilla.org/de/docs/Web/HTTP/Methods
- https://restfulapi.net/
- https://swagger.io/specification/
- https://www.howtographql.com/basics/1-graphql-vs-rest/