Excellent rest met de web api

2,767 views

Published on

0 Comments
0 Likes
Statistics
Notes
  • Be the first to comment

  • Be the first to like this

No Downloads
Views
Total views
2,767
On SlideShare
0
From Embeds
0
Number of Embeds
1,766
Actions
Shares
0
Downloads
11
Comments
0
Likes
0
Embeds 0
No embeds

No notes for slide

Excellent rest met de web api

  1. 1. Excellent REST met deWebAPIMaurice de Beijer
  2. 2. Wie ben ik• Maurice de Beijer• The Problem Solver• Microsoft Integration MVP• DevelopMentor instructor• Twitter: @mauricedb• Blog: http://msmvps.com/blogs/theproblemsolver/• Web: http://www.HTML5Support.nl• E-mail: mauricedb@computer.org
  3. 3. Agenda• Wat is REST?• Wat is de ASP.NET WebAPI• Hypermedia
  4. 4. Wat is REST? REpresentational State Transfer (REST) is een software-architectuur voor gedistribueerde mediasystemen zoals het World wide web. Wikipedia
  5. 5. Wat is REST?• Bedacht door Roy Thomas Fielding – Onderdeel van zijn doctoraalstudie uit 2000 – Een van de drie auteurs van de Hypertext Transfer Protocol -- HTTP/1.0• Een manier om web services te maken – Op basis van de HTTP standaard
  6. 6. Hypertext Transfer ProtocolThe Hypertext Transfer Protocol (HTTP) is an application-level protocol fordistributed, collaborative, hypermedia information systems. It is ageneric, stateless, protocol which can be used for many tasks beyond its use for hypertext. The Internet Engineering Task Force
  7. 7. Richardson Maturity Model
  8. 8. ASP.NET WebAPIASP.NET Web API is een framework dathet makkelijk maakt om HTTP en REST services te bouwen op het .NET framework.
  9. 9. WebAPI Controllers• In een ApiController gebeurt het werk – Toegang tot het Request en Response• ModelBinding maakt het werken met binnenkomende data gemakkelijk – Kan ook met een HttpRequestMessage werken
  10. 10. WebAPI Controllers• Veel controle over data naar de client – HttpResponseMessage – Content negotiation• Kan ook HTTP headers zetten – Caching – Optimistic concurrency
  11. 11. WebAPI Controllerspublic class DemoController : ApiController{ // GET api/demo public IEnumerable<string> Get() { return new string[] { "value1", "value2" }; }}
  12. 12. WebAPI Routes• Routes koppelen URL aan Controller – Net als in ASP.NET MVC• Je kan er meerdere hebben – De volgorde is van belang
  13. 13. WebAPI Routespublic static void Register(HttpConfiguration config){ config.Routes.MapHttpRoute( name: "DefaultApi", routeTemplate: "api/{controller}/{id}", defaults: new { id = RouteParameter.Optional } );}
  14. 14. demoWebAPI
  15. 15. Content negotiation• Wat we versturen != hoe we het weergeven – JSON of XML: een boek blijft een boek
  16. 16. MediaTypeFormatter• Een media type geeft het formaat aan – JSON, XML, Word, PDF, VCard etc• Een MediaTypeFormatter converteert – HTTP <> CLR type• Content negotiation bepaalt het type – De client gebruikt de Accept header
  17. 17. MediaTypeFormatterpublic class CustomersTextFormatter : BufferedMediaTypeFormatter{ public CustomersTextFormatter() { SupportedMediaTypes.Add(new MediaTypeHeaderValue("text/text")); } public override bool CanWriteType(Type type) { return typeof(IEnumerable<Customer>).IsAssignableFrom(type); } public override void WriteToStream(Type type, object value, Stream writeStream, HttpContent content) { // ... }}
  18. 18. demoContent Negotiation
  19. 19. HTTP Methods• HTTP ondersteunt veel methodes – Binnen HTML gebruiken we er maar twee• HTTP methodes geven het doel aan – Vertaalt goed naar CRUD acties
  20. 20. HTTP MethodsAktie HTTP MethodCreate POSTRead GETUpdate (helemaal vervangen) PUTUpdate (gedeeltelijk) PATCHDelete DELETE
  21. 21. WebAPI HTTP Methodspublic class DemoController : ApiController { // GET api/demo public IEnumerable<string> Get() // GET api/demo/5 public string Get(int id) // POST api/demo public void Post([FromBody]string value) // PUT api/demo/5 public void Put(int id, [FromBody]string value) // DELETE api/demo/5 public void Delete(int id)}
  22. 22. demoCRUD operaties
  23. 23. Hypermedia - Roy T. Fielding Hypermedia is defined by the presence of application control information embeddedwithin, or as a layer above, the presentation of information. Distributed hypermedia allows the presentation and control information to be stored at remote locations. Roy T. Fielding
  24. 24. Richardson Maturity Model
  25. 25. Het OData Protocol• Open Data Protocol (OData) – Een web protocol voor het zoeken naar en bijwerken van data. – Gebaseerd op de W3C AtomPub standaard• Kan ook metadata bevatten• Zie ook WCF Data Services
  26. 26. OData metadata• Een OData service kan metadata teruggeven – http://odata.netflix.com/v2/Catalog/$metadata• Maakt generieke browsers als SQL Server PowerPivot for Excel mogelijk
  27. 27. demoOData
  28. 28. ASP.NET WebAPI en OData• Er is een NuGet package – Install-Package Microsoft.AspNet.WebApi.OData –pre• Op dit moment is er ondersteuning voor filter en sorteren – Er wordt gewerkt aan het OData formaat
  29. 29. OData queriespublic class CustomerController : ApiController{ private NorthwindEntities db = new NorthwindEntities(); // GET api/Default2 [Queryable(PageSize=10)] public IQueryable<Customers> GetCustomers() { return db.Customers; }}
  30. 30. demoOData queries
  31. 31. Conclusie• ASP.NET WebAPI maakt REST gemakkelijk – Maar soms is MVC al genoeg• Denk aan hypermedia – Zeker als het een publieke service is

×