Skip to content
IRC-Coding IRC-Coding
REST Representational State Transfer HTTP Methoden Statuscodes HATEOAS Caching API Design

REST Architekturstil einfach erklärt: Ressourcen, Methoden, Statuscodes, HATEOAS & Caching

REST: Representational State Transfer für verteilte Hypermedia Systeme. Mit 6 Constraints Ressourcen-URI, HTTP-Methoden (GET/POST/PUT/PATCH/DELETE), Statuscodes, HATEOAS, Caching und Prüfungsfragen.

S

schutzgeist

2 min read

REST Architekturstil

Dieser Beitrag ist eine Begriffserklärung zu REST – inklusive Prüfungsfragen und Tags.

In a Nutshell

REST ist ein Architekturstil für verteilte Hypermedia Systeme auf Basis von HTTP. Kerngedanke: Ressourcen werden über URIs adressiert, mit standardisierten Methoden manipuliert und über Repräsentationen übertragen.

Kompakte Fachbeschreibung

REST definiert sechs Constraints: Client-Server, Zustandslosigkeit, Cache-Fähigkeit, Einheitliche Schnittstelle, Schichten, optional Code on Demand. Ressourcen sind fachliche Objekte, die eindeutig per URI identifiziert werden (z.B. https://api.shop.de/orders/42). Repräsentationen transportieren den Zustand, meist JSON oder XML, verhandelt über Content Negotiation via Accept und Content-Type. Methoden haben Semantik: GET ist sicher/idempotent, POST nicht idempotent, PUT idempotent, PATCH nicht zwingend idempotent, DELETE idempotent. Statuscodes signalisieren Ergebnis (200, 201, 204, 400, 401, 403, 404, 409, 500). HATEOAS bindet Navigations- und Aktionslinks in Repräsentationen ein. Effizientes Caching nutzt Cache-Control, ETag, Last-Modified und bedingte Anfragen.

Prüfungsrelevante Stichpunkte

  • Ressourcenorientiertes API Design, Substantive/Plural, stabile URIs, keine Verben im Pfad
  • HTTP Methoden und Semantik, sicher/idempotent/nicht-idempotent, Mapping auf CRUD
  • Idempotenz sauber definieren, insbesondere für PUT, DELETE, POST mit Idempotency Key
  • Statuscodes zielgerichtet verwenden, 2xx/3xx/4xx/5xx, Location Header bei 201
  • Anforderungen an Datenschutz, Protokollierung, Nachvollziehbarkeit, Fehlercodes dokumentieren
  • TLS erzwingen, OAuth 2/OIDC, JWT, CORS, Rate Limiting, Input Validierung, Logging
  • Lose Kopplung, Wiederverwendung, unabhängige Weiterentwicklung von Client und Server
  • OpenAPI-Dokumentation, Beispiel Requests/Responses, Fehlerkatalog, Versionsstrategie

Kernkomponenten

  1. Ressource und URI Design
  2. Repräsentationen, Medien-Typen und Schema
  3. Methoden Semantik: GET, POST, PUT, PATCH, DELETE
  4. Statuscodes und Header
  5. Content Negotiation: Accept, Content-Type, Accept-Language
  6. Caching: Cache-Control, ETag, Last-Modified, Conditional Requests
  7. Sicherheit: Authentisierung, Autorisierung, TLS, CORS
  8. Versionierung: URI, Header, Content-Types
  9. Beobachtbarkeit: Logging, Metriken, Tracing, Korrelations-ID
  10. Testverfahren: Contract Tests, API Tests, Fehlerpfade, Idempotenz Tests

Praxisbeispiel

// Beispiel: Bestellressource mit HATEOAS und Idempotenz
Ressourcen:
GET /orders - Liste der Bestellungen
POST /orders - neue Bestellung anlegen
GET /orders/{order-id} - Einzelbestellung lesen
PUT /orders/{order-id} - Bestellung vollständig ersetzen
PATCH /orders/{order-id} - Bestellung teilweise ändern
DELETE /orders/{order-id} - Bestellung löschen

Beispiel POST Anfrage:
{
  "customerId": 12345,
  "items": [{ "sku": "A1", "qty": 2 }]
}

Antwort 201 Created, Header: Location: https://api.shop.de/orders/42
Body:
{
  "order-id": 42,
  "status": "created",
  "links": [
    { "rel": "self", "href": "https://api.shop.de/orders/42" },
    { "rel": "confirm", "method": "POST", "href": "https://api.shop.de/orders/42/confirm" }
  ]
}

Idempotenz bei POST: Client sendet zusätzlich Idempotency-Key: abc-123.
Server speichert Ergebnis pro Schlüssel, liefert bei Wiederholung dieselbe Antwort.

Vorteile und Nachteile

Vorteile

  • Interoperabilität durch Standards
  • Lose Kopplung, gute Skalierung durch Zustandslosigkeit
  • Effizientes Caching, klare Fehlersignale über Statuscodes
  • Einfache Nutzung durch Browser und Tools

Nachteile

  • Overfetching und Underfetching möglich
  • Komplexe Schreibprozesse erfordern saubere Idempotenz und Transaktionsstrategien
  • HATEOAS wird oft vernachlässigt
  • Sicherheitsverantwortung liegt stark beim API Design
  • Bei Chatty APIs steigen Latenzen

Typische Prüfungsfragen (mit Kurzantwort)

  1. Sechs REST Constraints und Wirkung? Client-Server (unabhängige Entwicklung), Stateless (keine Sitzungszustände), Cacheable (wiederholte Antworten effizient), Uniform Interface (standardisierte Methoden), Layered (Intermediäre möglich), Code on Demand (optional Skripte).
  2. PUT vs. PATCH bei Idempotenz? PUT ersetzt vollständig und ist idempotent, PATCH ändert partiell und ist nicht zwingend idempotent.
  3. Safe für HTTP Methoden? Safe = keine zustandsverändernden Nebenwirkungen, GET und HEAD sind sicher (nur lesen).
  4. ETag und bedingte Anfragen? Server liefert ETag, Client sendet If-None-Match, bei Gleichheit antwortet Server mit 304 Not Modified ohne Body.
  5. REST API versionieren? URI-Versionen (/v1), Header-basiert, Accept-basiert (application/vnd.firma.resource.v2+json), wichtig: abwärtskompatible Änderungen.
  6. HATEOAS und Nutzen? Client entdeckt Aktionen über Links in Repräsentationen, reduziert Kopplung und harte Annahmen über Workflows.
  7. Content Negotiation in der Praxis? Client sendet Accept (application/json), Server wählt passende Repräsentation oder antwortet mit 406 Not Acceptable.
  8. Idempotente Schreiboperationen bei Zahlungen? POST auf Sammlungsressource mit Idempotency Key, dedizierte Transaktionsressource, Wiederholungen mit gleichem Schlüssel liefern denselben Endzustand:
/payments/{payment-id}

Wichtigste Quellen

  1. https://roy.gbiv.com/untangled
  2. https://www.rfc-editor.org/rfc/rfc9110
  3. https://learn.microsoft.com/azure/architecture/best-practices/api-design
Zurück zum Blog
Share:

Ähnliche Beiträge