HATEOAS (Hypermedia as the Engine of Application State)

{{heroImg}} logo
HATEOAS ist ein Constraint der REST-Architektur, bei dem Client-Server-Interaktionen vollständig durch Hypermedia gesteuert werden. Der Server liefert nicht nur Daten, sondern auch Informationen über mögliche nächste Aktionen in Form von Links.

Was ist HATEOAS?

Stellen Sie sich HATEOAS wie einen intelligenten Reiseführer vor: Anstatt Ihnen nur Informationen über einen Ort zu geben, zeigt er Ihnen auch alle möglichen Wege und Aktivitäten, die von dort aus verfügbar sind. In einer API bedeutet dies, dass jede Antwort nicht nur die angeforderten Daten enthält, sondern auch Links zu verwandten Ressourcen und möglichen Aktionen.

Grundprinzipien

  • Selbstbeschreibende Schnittstellen durch Hypermedia-Links
  • Dynamische Ressourcenverknüpfung für flexible Navigation
  • Zustandsübergänge werden durch Links gesteuert
  • Lose Kopplung zwischen Client und Server
  • Evolutionäre API-Entwicklung ohne Client-Änderungen

Beispiel einer HATEOAS-Antwort

{
    "_links": {
        "self": { "href": "/orders/123" },
        "payment": { "href": "/orders/123/payment" },
        "cancel": { "href": "/orders/123/cancel" }
    },
    "orderId": "123",
    "status": "in_progress"
}

In diesem Beispiel enthält die Antwort nicht nur Informationen über die Bestellung, sondern auch Links zu möglichen Aktionen wie Bezahlung oder Stornierung.

Vorteile von HATEOAS

  • Clients müssen URLs nicht fest einprogrammieren
  • APIs können sich weiterentwickeln ohne Clients zu brechen
  • Bessere Entdeckbarkeit von API-Funktionen
  • Reduzierte Client-Komplexität
  • Verbesserte API-Dokumentation durch Selbstbeschreibung

Implementierungsformate

  • HAL (Hypertext Application Language)
  • JSON-LD für verknüpfte Daten
  • Collection+JSON für Sammlungen
  • Siren für umfangreiche Hypermedia
  • HAL-FORMS für Formulare

Praktische Anwendung

HATEOAS wird besonders in großen, sich entwickelnden APIs eingesetzt, wo Flexibilität und Wartbarkeit wichtig sind. Ein typisches Beispiel ist ein E-Commerce-System, bei dem der Status einer Bestellung verschiedene Aktionen ermöglicht oder verhindert:

  • Neue Bestellung: Links zum Bezahlen und Stornieren
  • Bezahlte Bestellung: Link zur Sendungsverfolgung
  • Versendete Bestellung: Link zur Bewertung

Verwandte Begriffe