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

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

7252086bae9203045dd7f5664fd96a07?s=47 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.

7252086bae9203045dd7f5664fd96a07?s=128

Manuel Meyer

September 27, 2017
Tweet

Transcript

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

    Trivadis AG Manuel Meyer, Trivadis AG
  2. Über uns… Wolfgang Wittner .NET/MVC/AspNetCore wolfgang.wittner@trivadis.com Manuel Meyer C#/XAML/VS/Azure www.manuelmeyer.net

    manuel.meyer@trivadis.com
  3. 1. REST 2. .Net Core 3. HATEOAS.

  4. Kapitel 1: HATEO…Was?

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

  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)
  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
  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
  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)
  10. Zur gleichen Zeit im Office…

  11. None
  12. SOAP vs. REST SOAP, XML, WCF GetCustomer() UpdateCustomer() REST, HTTP

    GET /customer/{id} PUT /customer/{id}.
  13. .NET in 2017

  14. Kapitel 2: .NET Core

  15. .NET vs .NET Core • Alle App-Modelle • Alle APIs

    • Windows • Monolith • Eingeschränkt • .NET Standard • Cross-Platform • Modular & Open Source -> Self-contained.
  16. .NET Core

  17. .NET Core Middleware

  18. DEMO A simple .NET Core API

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

    den Tag legen».
  20. Swagger

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

  22. None
  23. Swagger http://swagger.io/

  24. DEMO A simple .NET Core API + Swagger

  25. Kapitel 3: HATEOAS

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

  27. HATEOAS «Hypermedia ist eine Erweiterung von Hypertext» «Der Rest von

    REST» «Der heilige Gral» «Müll». Hypermedia as the Engine of Application State
  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
  29. Clients Server HATEOAS / Hypermedia controller model

  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”
  31. HAL https://github.com/mikekelly/hal_specification/wiki/Libraries https://github.com/visualeyes/halcyon

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

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

  34. HATEOAS

  35. DEMO A simple .NET Core API + HATEOAS

  36. 1. REST 2. .NET Core 3. .NET Core + Swagger

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

  38. Danke!

  39. Danke!

  40. Danke! www.trivadis.com