API Versionierung

Deprecation und Sunsetting mit OpenAPI

API Versionierung ermöglicht es, Änderungen vorzunehmen, ohne den Ausfall von Clients zu riskieren. Sie dient der Verwaltung von Änderungen, wobei alles, was modifiziert werden kann, auch versioniert werden kann – sei es Dokumente, Quellcode oder APIs. Jeder Stand der Änderungen erhält eine eigene Versionsnummer, um gezielt auf bestimmte Versionen zugreifen zu können.

Ein verbreitetes Schema für Versionsnummern ist das Semantic Versioning, bei dem eine Version mit drei Nummern beschrieben wird. Die erste Nummer, die Major-Number, wird erhöht, wenn die neue Version nicht mehr abwärtskompatibel zur vorigen ist. Die nächste, die Minor-Number wird erhöht, wenn sich die Schnittstelle ändert, ohne die Kompatibilität zur vorigen zu brechen. Die letzte Zahl, beschreibt den Patch-Level bei APIs wären das Änderungen, die sich nicht auf die Schnittstelle auswirken z.B. Änderungen der Dokumentation oder von Metadaten.

API Versionierung ist nicht zwingend erforderlich, solange alle Clients ohne viel Aufwand aktualisiert werden können. Sobald jedoch Clients von externen Teams oder Organisationen entwickelt und betrieben werden, ist die Nutzung von Versionierung angebracht, insbesondere wenn diese Anwendungen von der Funktionalität und Verfügbarkeit der Schnittstelle abhängig sind.

Eine Änderung, die dazu führt, dass Clients nicht mehr erfolgreich eine Schnittstelle nutzen können, wird als Breaking Change bezeichnet.

Zur Ermittlung von Änderungen zwischen verschiedenen API-Versionen stehen Tools wie openapi-diff, oasdiff und optic zur Verfügung, die OpenAPI-Beschreibungen vergleichen können. Ein Versionsvergleich liefert einen Bericht zurück, der auch Breaking Changes auflistet.

Im Video erfährst du, was API-Versionierung ist, welche Arten von Änderungen es gibt und wie man APIs versionieren kann. In einer ausführlichen Live-Demo wird gezeigt, wie man mithilfe von OpenAPI eine Schnittstelle versionieren kann. Es werden Best-Practice-Empfehlungen für das Ausschleichen, die Deprecation von APIs sowie für Sunsetting vorgestellt.

Material

Werkzeuge für den Versionsvergleich von OpenAPI Dokumenten

  • oasdiff
    Open Source OpenAPI Diff Werkzeug geschrieben in Go für die Kommandozeile und github Actions
  • openapi-diff
    Mit Java realisiertes Open Source OpenAPI Diff Tool. openapi-diff kann in eigene Projekte als Maven Bibliothek eingebunden oder im Docker Container gestartet werden.
  • optic OpenAPI Diff
    Ebenfalls Open Source mit Typescript realisiertes Projekt für den Versionsvergleich. Kann als npm Package in eigene Projekte eingebunden oder von der Kommandozeile ausgeführt werden.

Online OpenAPI Vergleich

  • oasdiff
    Angeblich "the sexiest" OpenAPI Breaking Change Detector

API Trainings

Mehr zu OpenAPI und API Versionierung kannst du in unserer API Schulung erfahren.

APIs mit REST, OpenAPI & GraphQL