6 • Anforderungen ändern sich • APIs verändern sich zwangsläufig mit • Breaking changes können nicht ausgeschlossen werden direkt aus der Praxis • Bei (öffentlichen) APIs, deren Clients nicht unter eigener Kontrolle sind
7 • Endpunkte • Entfernen von Endpunkten • Hinzufügen von neuen Pflichtparametern • Änderungen am Verhalten von Endpunkten • Datenmodell • Entfernen oder Umbenennen von vorher gelieferten Daten • Ändern von Datentypen • Hinzufügen neuer Pflichtdaten beim Empfang (entweder ganz neu oder vorher optional) • [Hinzufügen von neuen Daten beim Senden, für unflexible Clients] direkt aus der Praxis
14 • Mittels externer Bibliothek • NuGet: Microsoft.AspNetCore.Mvc.Versioning • GitHub: https://github.com/microsoft/aspnet-api-versioning • Hinweis • Paket stammt nicht vom ASP.NET Core Team • Nicht im aspnet/AspNetCore Repository • Kein offizielles von Microsoft supportetes Paket • Gewartet von einem Microsoft Entwickler aus dem Bing-Team direkt aus der Praxis
15 • Version • [Version Group.].[-Status] • [.[.Minor]][-Status] • Version Group • YYYY-MM-DD • Beispiele: • 1.0 • 2.1-RC1 • 2019-11-07.1 • 2019-11-07.2.1-Alpha direkt aus der Praxis
16 • Version kann festgelegt warden • Auf einem Controller • Auf einer einzelnen Action • Ermöglicht • Einen Controller pro Version • Mehrere Action-Versionen auf einem Controller • Beliebig mischbar • Angefragte, aber nicht gefundene Version liefert einen 400 Bad Request • Default-Version kann optional konfiguriert werden • Es gibt viele weitere Konfigurations- und Anpassungsmöglichkeiten direkt aus der Praxis
22 • Konfigurieren von API Versioning • Verwenden von HTTP Headern zur Versionsauswahl • Verwenden von URL Pfad zur Versionsauswahl • API Versionen als veraltet markieren direkt aus der Praxis
27 • Einbinden in existierendes Projekt • Endpunkte von Versionierung ausnehmen • Custom Header Versioning • Angeforderte Version im Code abfragen direkt aus der Praxis
33 • API-Versionierung ist nicht immer notwendig • Es gibt verschiedene Arten der Versionsauswahl • There’s a NuGet for that • Allerdings nicht offiziell vom ASP.NET Core Team • Verwendung benötigt wenig Code • Aber etwas Gehirnschmalz bei der Planung direkt aus der Praxis