$30 off During Our Annual Pro Sale. View Details »

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

Sebastian Gingter

September 23, 2020
Tweet

More Decks by Sebastian Gingter

Other Decks in Technology

Transcript

  1. 1
    direkt aus der Praxis

    View Slide

  2. View Slide

  3. 3
    direkt aus der Praxis








    ▪ Twitter:

    View Slide

  4. 4





    direkt aus der Praxis

    View Slide

  5. 5
    direkt aus der Praxis

    View Slide

  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

    View Slide

  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

    View Slide

  8. 8
    direkt aus der Praxis

    View Slide

  9. 9
    direkt aus der Praxis

    View Slide

  10. 10
    direkt aus der Praxis

    View Slide

  11. 11
    direkt aus der Praxis

    View Slide

  12. 12
    direkt aus der Praxis

    View Slide

  13. 13
    direkt aus der Praxis

    View Slide

  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

    View Slide

  15. 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

    View Slide

  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

    View Slide

  17. 17





    direkt aus der Praxis

    View Slide

  18. 18



    direkt aus der Praxis

    View Slide

  19. 19
    direkt aus der Praxis

    View Slide

  20. 20
    direkt aus der Praxis

    View Slide

  21. 21
    direkt aus der Praxis

    View Slide

  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

    View Slide

  23. 23
    direkt aus der Praxis

    View Slide

  24. 24
    direkt aus der Praxis

    View Slide

  25. 25
    direkt aus der Praxis

    View Slide

  26. 26
    direkt aus der Praxis

    View Slide

  27. 27
    • Einbinden in existierendes Projekt
    • Endpunkte von Versionierung ausnehmen
    • Custom Header Versioning
    • Angeforderte Version im Code abfragen
    direkt aus der Praxis

    View Slide

  28. 28
    Demo
    Einbinden in existierendes Projekt
    direkt aus der Praxis

    View Slide

  29. 29
    Demo
    Endpunkte ausnehmen
    direkt aus der Praxis

    View Slide

  30. 30
    Demo
    Custom Header Versioning
    direkt aus der Praxis

    View Slide

  31. 31
    Demo
    Angeforderte Version ermitteln
    direkt aus der Praxis

    View Slide

  32. 32
    direkt aus der Praxis

    View Slide

  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

    View Slide

  34. 34
    direkt aus der Praxis
    https://www.thinktecture.com/de/cheatsheet/aspnetcore/

    View Slide

  35. View Slide