• Like
Excellent rest met de web api
Upcoming SlideShare
Loading in...5
×

Excellent rest met de web api

  • 2,311 views
Uploaded on

 

  • Full Name Full Name Comment goes here.
    Are you sure you want to
    Your message goes here
    Be the first to comment
    Be the first to like this
No Downloads

Views

Total Views
2,311
On Slideshare
0
From Embeds
0
Number of Embeds
12

Actions

Shares
Downloads
6
Comments
0
Likes
0

Embeds 0

No embeds

Report content

Flagged as inappropriate Flag as inappropriate
Flag as inappropriate

Select your reason for flagging this presentation as inappropriate.

Cancel
    No notes for slide

Transcript

  • 1. Excellent REST met deWebAPIMaurice de Beijer
  • 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. Agenda• Wat is REST?• Wat is de ASP.NET WebAPI• Hypermedia
  • 4. Wat is REST? REpresentational State Transfer (REST) is een software-architectuur voor gedistribueerde mediasystemen zoals het World wide web. Wikipedia
  • 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. 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. Richardson Maturity Model
  • 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. 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. WebAPI Controllers• Veel controle over data naar de client – HttpResponseMessage – Content negotiation• Kan ook HTTP headers zetten – Caching – Optimistic concurrency
  • 11. WebAPI Controllerspublic class DemoController : ApiController{ // GET api/demo public IEnumerable<string> Get() { return new string[] { "value1", "value2" }; }}
  • 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. WebAPI Routespublic static void Register(HttpConfiguration config){ config.Routes.MapHttpRoute( name: "DefaultApi", routeTemplate: "api/{controller}/{id}", defaults: new { id = RouteParameter.Optional } );}
  • 14. demoWebAPI
  • 15. Content negotiation• Wat we versturen != hoe we het weergeven – JSON of XML: een boek blijft een boek
  • 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. 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. demoContent Negotiation
  • 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. HTTP MethodsAktie HTTP MethodCreate POSTRead GETUpdate (helemaal vervangen) PUTUpdate (gedeeltelijk) PATCHDelete DELETE
  • 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. demoCRUD operaties
  • 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. Richardson Maturity Model
  • 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. 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. demoOData
  • 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. OData queriespublic class CustomerController : ApiController{ private NorthwindEntities db = new NorthwindEntities(); // GET api/Default2 [Queryable(PageSize=10)] public IQueryable<Customers> GetCustomers() { return db.Customers; }}
  • 30. demoOData queries
  • 31. Conclusie• ASP.NET WebAPI maakt REST gemakkelijk – Maar soms is MVC al genoeg• Denk aan hypermedia – Zeker als het een publieke service is