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

BASTA! 2017 - Mit .NET Core und HATEOAS zum perfekten REST-API?

Manuel Meyer
September 27, 2017

BASTA! 2017 - Mit .NET Core und HATEOAS zum perfekten REST-API?

Mit dem Akronym HATEOAS, abgekürzt für "Hypermedia As The Engine Of Application State", hat der Computerwissenschaftler Roy Fielding im Jahr 2000 erläutert, wie aus seiner Sicht das perfekte REST-API gebaut werden muss. HATEOAS ermöglicht ein API, das ohne zusätzliche sogenannte "Out-of-band"-Informationen verstanden und konsumiert werden kann. Dies wird ermöglicht, indem die Antworten des Servers dem Aufrufer über Links mitteilen, welche Folgeabfragen möglich sind. Seither streiten sich die Experten über das Thema und dessen Relevanz in der Praxis. In dieser Session zeigen wir, wie Enterprise-REST-APIs mit .NET Core gebaut werden können, und was es mit HATEOAS genau auf sich hat.

Manuel Meyer

September 27, 2017
Tweet

More Decks by Manuel Meyer

Other Decks in Programming

Transcript

  1. Mit .NET Core und HATEOAS
    zur perfekten REST-API?
    Wolfgang Wittner, Trivadis AG
    Manuel Meyer, Trivadis AG

    View Slide

  2. Über uns…
    Wolfgang Wittner
    .NET/MVC/AspNetCore
    [email protected]
    Manuel Meyer
    C#/XAML/VS/Azure
    www.manuelmeyer.net
    [email protected]

    View Slide

  3. 1. REST
    2. .Net Core
    3. HATEOAS.

    View Slide

  4. Kapitel 1:
    HATEO…Was?

    View Slide

  5. REST-APIs mit .NET Core
    und HATEOAS?

    View Slide

  6. REST-APIs mit .Net Core und HATEOAS
    REST
    API
    .Net Core
    HATEOAS
    Representational State Transfer
    Application Programming Interface
    Hypertext As The Engine Of
    Application State (Hypermedia)

    View Slide

  7. The History of REST
    „REST started as a
    model how the web and
    web apps should work.“
    Roy Fielding, 2000
    https://www.youtube.com/watch?v=w5j2KwzzB-0
    http://www.ics.uci.edu/~fielding/pubs/dissertation/rest_arch_style.htm

    View Slide

  8. The History of REST
    – Simple
    – Scalable
    – Reliable
    – Extensible.
    Roy Fielding, 2000
    https://www.youtube.com/watch?v=w5j2KwzzB-0
    http://www.ics.uci.edu/~fielding/pubs/dissertation/rest_arch_style.htm

    View Slide

  9. Promotes
    Simplified server,
    Scalability, Reliability
    Efficiency, Scalability
    Visibility
    Independent Evolution
    Decoupled Implementation
    Simplified clients, scalability
    Extensibility
    Constraint
    Client Server
    Stateless
    Optional non-shared caching
    Uniform Interface
    identification of resources in request,
    manipulation via resources
    self-descriptive messages
    HATEOAS
    Layered system
    code on-demand (optional)

    View Slide

  10. Zur gleichen Zeit im Office…

    View Slide

  11. View Slide

  12. SOAP vs. REST
    SOAP, XML, WCF
    GetCustomer()
    UpdateCustomer()
    REST, HTTP
    GET /customer/{id}
    PUT /customer/{id}.

    View Slide

  13. .NET in 2017

    View Slide

  14. Kapitel 2:
    .NET Core

    View Slide

  15. .NET vs .NET Core
    • Alle App-Modelle
    • Alle APIs
    • Windows
    • Monolith
    • Eingeschränkt
    • .NET Standard
    • Cross-Platform
    • Modular & Open
    Source
    -> Self-contained.

    View Slide

  16. .NET Core

    View Slide

  17. .NET Core Middleware

    View Slide

  18. DEMO
    A simple .NET Core API

    View Slide

  19. Ich seh nix!
    Swagger!
    «einherstolzieren»
    «grosstun»
    «eine grosstuerische Art an den Tag legen».

    View Slide

  20. Swagger

    View Slide

  21. YES, WE DO!
    Meet Swashbuckle!
    «sich draufgängerisch
    benehmen».

    View Slide

  22. View Slide

  23. Swagger
    http://swagger.io/

    View Slide

  24. DEMO
    A simple .NET Core API + Swagger

    View Slide

  25. Kapitel 3:
    HATEOAS

    View Slide

  26. https://www.martinfowler.com/articles/richardsonMaturityModel.html
    Richardson
    Maturity
    Model
    /Person
    GET /Person
    HATEOAS

    View Slide

  27. HATEOAS
    «Hypermedia ist
    eine Erweiterung
    von Hypertext»
    «Der Rest von REST»
    «Der heilige Gral» «Müll».
    Hypermedia as the Engine of Application State

    View Slide

  28. REST Spec
    Constraint Promotes
    Client Server Simplified server,
    Stateless Scalability, Reliability
    Optional non-shared caching Efficiency, Scalability
    Uniform Interface
    identification of resources in request,
    manipulation via resources
    self-descriptive messages
    HATEOAS
    Visibility
    Independen Evolution
    Decoupled Implementation
    Layered system Simplified clients, scalability
    code on-demand (optional) Extensibility

    View Slide

  29. Clients Server
    HATEOAS / Hypermedia
    controller model

    View Slide

  30. HAL
    Hypertext Application Language
    HAL = Resources & Links.
    content-type =
    application/hal+json
    “HAL is a simple format that
    gives a consistent and easy
    way to hyperlink between
    resources in your API”

    View Slide

  31. HAL
    https://github.com/mikekelly/hal_specification/wiki/Libraries
    https://github.com/visualeyes/halcyon

    View Slide

  32. HATEOAS
    GET https://api.example.com/person/117283955

    View Slide

  33. HATEOAS
    GET https://api.example.com/person/117283955

    View Slide

  34. HATEOAS

    View Slide

  35. DEMO
    A simple .NET Core API + HATEOAS

    View Slide

  36. 1. REST
    2. .NET Core
    3. .NET Core + Swagger
    4. .Net Core + HATEOAS.

    View Slide

  37. Danke!
    Wolfgang Wittner
    .NET/MVC/AspNetCore
    Manuel Meyer
    C#/XAML/VS/Azure
    www.manuelmeyer.net

    View Slide

  38. Danke!

    View Slide

  39. Danke!

    View Slide

  40. Danke!
    www.trivadis.com

    View Slide