2. Waar gaan we het over hebben
Wat zijn REST services
Wat is de ASP.NET Web API
Hoe kan je een REST service vanuit de browser
gebruiken
Realtime communicatie
3. Wie ben ik
Maurice de Beijer.
The Problem Solver.
Microsoft CSD MVP.
DevelopMentor instructor.
Twitter: @mauricedb of @HTML5SupportNL
Blog: http://msmvps.com/blogs/
theproblemsolver/default.aspx
Web: http://www.HTML5Support.nl
E-mail: mauricedb@computer.org
4. Wat is REST
Representational State Transfer
REST is een architectuur voor gedistribueerde
applicaties
Er is geen REST standaard
De HTTP standaard is de basis
Heeft zich door de jaren bewezen
5. Hypertext Transfer Protocol
The Hypertext Transfer Protocol (HTTP) is an
application-level protocol for
distributed, collaborative, hypermedia information
systems. It is a generic, stateless, protocol which can
be used for many tasks beyond its use for hypertext
6. REST is niet nieuw
Architectural Styles and the Design of Network-based
Software Architectures
By Roy Thomas Fielding
Chapter 5
Een van de schrijvers van de
HTTP specificaties
7. Basis begrippen
Resource = data
Bv: een product of een klant
Representation = het weergave formaat
Bv: XML, JSON
Maar ook een PDF of een vCard
8. REST versus SOAP
REST SOAP
Standardized No WS-*
Transport HTTP HTTP, FTP, Pipes,
MSMQ etc
Data Format Any XML
Reach Very good Good
Development tools Basic Good
Flexibility Flexible Rigid
Scalability Very good Reasonable
Security HTTP Security WS-Security
Operations Stateless Often statefull
9. ASP.NET Web API
Onderdeel van ASP.NET MVC 4
Maar ook los te gebruiken
Zelfs buiten ASP.NET
Gebruik ApiController als de baseclass
Gewoon de data ipv een ActionResult teruggeven
Routing net als normale controllers
Alleen RouteCollection.MapHttpRoute() gebruiken
De standaard route is: "api/{controller}/{id}"
10. HTTP Methods
HTTP methods worden gebruikt om acties aan te
geven
ASP.NET Web API gebruikt functie namen
Attributen kan eventueel ook
Action HTTP Method
Create POST
Read GET
Update (replace) PUT
Update (partial) PATCH of MERGE
Delete DELETE
11. HTTP Status Codes
Een verplicht onderdeel van elke response
Als alles goed gaat is het 200 OK
Ingedeeld in groepen
1-- Informational
2-- Success
3-- Redirection
4-- Client Error
5-- Server Error
Binnen de ASP.NET Web API met een
HttpResponseMessage aan te geven
Anders is het 200 OK
12.
13. Resource formats
Web API ondersteunt content negotiation
XML, JSON en Form Encoded standaard
De client gebruikt de Accept header
De server mag daar van afwijken!
Extra formats toe te voegen via MediaTypeFormatter
16. Browsers en REST
Soms vergeet een browser de juiste Accept header
HTML != HTTP
Caching
17. Accept headers
Sommige browsers claimen alles als image te kunnen
t0nen
De Accept header mist of bevat */*
Via de URL aangeven wat het gewenste formaat is
GET /api/books/1?$format=jpeg
In de MediaTypeFormatter een
AddQueryStringMapping () doen.
18. HTML != HTTP
De HTTP standaard ondersteunt veel request methods
als GET, PUT, POST, DELETE etc
Maar de browser alleen GET en POST
Gebruik het XMLHttpRequest
Maar dan via jQuery.ajax()
19. Caching
Caching maakt het web schaalbaar
En kan ook helpen binnen onze applicaties
Standaard wordt data niet gecached bij de Web API
En dat is een goede zaak want browsers hebben
verschillende defaults
Caching is moeilijk goed te krijgen
Caching instructies zijn alleen hints
20. Cross-origin resource sharing
Een XmlHttpRequest mag alleen naar de
oorspronkelijke server
JSONP is een oplossing maar kan alleen GET
CORS maakt het mogelijk om naar een andere server
te gaan
De service voegt een extra HTTP header toe
Als die ontbreekt blokeert de browser de response
21. Real time communications
Waarom wachten tot een gebruiker de pagina ververst?
De server kan wijzigingen ook naar de browser sturen
In HTML5 hebben we WebSockets
Maar de ondersteuning is nog beperkt
SignalR is een goede communicatie library
Gebruikt WebSockets indien mogelijk
Gebruikt anders een fallback communicatie
22. Conclusie
REST services zijn zeer flexibel
En dat is maar goed ook met alle tablets en smartphones
De ASP.NET Web API is een prima framework
En er zijn genoeg alternatieven
Browsers hebben hun kuren
Test met verschillende browsers
Real time communicatie heeft de toekomst