BASTA! Hybrid 2020 - ASP.NET Core API Versionierung aus der Praxis

BASTA! Hybrid 2020 - ASP.NET Core API Versionierung aus der Praxis

Slides for my Talk at BASTA! Fall 2020

Ebeb5d8fd081058ba8df73d378bf83d7?s=128

Sebastian P.R. Gingter

September 23, 2020
Tweet

Transcript

  1. 1 direkt aus der Praxis

  2. None
  3. 3 direkt aus der Praxis ▪ ▪ ▪ ▪ ▪

    ▪ ▪ ▪ ▪ Twitter:
  4. 4 ▪ ▪ ▪ ▪ ▪ direkt aus der Praxis

  5. 5 direkt aus der Praxis

  6. 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. 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
  8. 8 direkt aus der Praxis

  9. 9 direkt aus der Praxis

  10. 10 direkt aus der Praxis

  11. 11 direkt aus der Praxis

  12. 12 direkt aus der Praxis

  13. 13 direkt aus der Praxis

  14. 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. 15 • 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 direkt aus der Praxis
  16. 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
  17. 17 ▪ ▪ ▪ ▪ ▪ direkt aus der Praxis

  18. 18 ▪ ▪ ▪ direkt aus der Praxis

  19. 19 direkt aus der Praxis

  20. 20 direkt aus der Praxis

  21. 21 direkt aus der Praxis

  22. 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
  23. 23 direkt aus der Praxis

  24. 24 direkt aus der Praxis

  25. 25 direkt aus der Praxis

  26. 26 direkt aus der Praxis

  27. 27 • Einbinden in existierendes Projekt • Endpunkte von Versionierung

    ausnehmen • Custom Header Versioning • Angeforderte Version im Code abfragen direkt aus der Praxis
  28. 28 Demo Einbinden in existierendes Projekt direkt aus der Praxis

  29. 29 Demo Endpunkte ausnehmen direkt aus der Praxis

  30. 30 Demo Custom Header Versioning direkt aus der Praxis

  31. 31 Demo Angeforderte Version ermitteln direkt aus der Praxis

  32. 32 direkt aus der Praxis

  33. 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
  34. 34 direkt aus der Praxis https://www.thinktecture.com/de/cheatsheet/aspnetcore/

  35. None