Upgrade to Pro — share decks privately, control downloads, hide ads and more …

Thinktecture Webinar: API Versionierung in .NET 5

Thinktecture Webinar: API Versionierung in .NET 5

Slides zu meinem Webinar.

Sebastian Gingter

March 10, 2021
Tweet

More Decks by Sebastian Gingter

Other Decks in Programming

Transcript

  1. 5 • Anforderungen ändern sich • APIs verändern sich zwangsläufig

    mit • Breaking changes können nicht ausgeschlossen werden in .NET 5 • Bei (öffentlichen) APIs, deren Clients nicht unter eigener Kontrolle sind P
  2. 6 • 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] in .NET 5
  3. 13 • 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 in .NET 5
  4. 14 • Version • [Version Group.]<Major>.<Minor>[-Status] • <Version Group>[.<Major>[.Minor]][-Status] •

    Version Group • YYYY-MM-DD • Beispiele: • 1.0 • 2.1-RC1 • 2019-11-07.1 • 2019-11-07.2.1-Alpha in .NET 5
  5. 15 • 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 in .NET 5
  6. 32 • 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 in .NET 5 1:1