HTML 5 & REST servicesMaurice de Beijer
Waar gaan we het over hebbenWat zijn REST servicesWat is de ASP.NET Web APIHoe kan je een REST service vanuit de
browser gebruikenRealtime communicatie
Wie ben ikMaurice de Beijer.The Problem Solver.Microsoft CSD MVP.DevelopMentor instructor.Twitter: @mauricedb of @HTML5SupportNLBlog: http://msmvps.com/blogs/
theproblemsolver/default.aspxWeb:http://www.HTML5Support.nlE-mail: [email protected]
Wat is RESTRepresentational State TransferREST is een architectuur voor
gedistribueerde applicatiesEr is geen REST standaardDe HTTP standaard is de basis
Heeft zich door de jaren bewezen
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
REST is niet nieuwArchitectural Styles and the Design of
Network-based Software ArchitecturesBy Roy Thomas FieldingChapter 5
Een van de schrijvers van deHTTP specificaties
Basis begrippenResource = data
Bv: een product of een klantRepresentation = het weergave formaat
Bv: XML, JSONMaar ook een PDF of een vCard
REST versus SOAPREST 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
ASP.NET Web APIOnderdeel van ASP.NET MVC 4
Maar ook los te gebruikenZelfs buiten ASP.NET
Gebruik ApiController als de baseclassGewoon de data ipv een ActionResult
teruggevenRouting net als normale controllers
Alleen RouteCollection.MapHttpRoute() gebruiken
De standaard route is: "api/{controller}/{id}"
HTTP MethodsHTTP methods worden gebruikt om acties
aan te gevenASP.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
HTTP Status CodesEen verplicht onderdeel van elke response
Als alles goed gaat is het 200 OKIngedeeld in groepen
1-- Informational2-- Success3-- Redirection4-- Client Error5-- Server Error
Binnen de ASP.NET Web API met een HttpResponseMessage aan te gevenAnders is het 200 OK
Resource formatsWeb API ondersteunt content negotiation
XML, JSON en Form Encoded standaardDe client gebruikt de Accept header
De server mag daar van afwijken!Extra formats toe te voegen via
MediaTypeFormatter
Pauze
Browsers en RESTSoms vergeet een browser de juiste Accept
headerHTML != HTTPCaching
Accept headersSommige browsers claimen alles als image te
kunnen t0nenDe Accept header mist of bevat */*
Via de URL aangeven wat het gewenste formaat isGET /api/books/1?$format=jpeg
In de MediaTypeFormatter een AddQueryStringMapping () doen.
HTML != HTTPDe HTTP standaard ondersteunt veel request
methods als GET, PUT, POST, DELETE etcMaar de browser alleen GET en POST
Gebruik het XMLHttpRequestMaar dan via jQuery.ajax()
CachingCaching maakt het web schaalbaar
En kan ook helpen binnen onze applicatiesStandaard wordt data niet gecached bij de
Web APIEn dat is een goede zaak want browsers
hebben verschillende defaultsCaching is moeilijk goed te krijgen
Caching instructies zijn alleen hints
Cross-origin resource sharingEen XmlHttpRequest mag alleen naar de
oorspronkelijke serverJSONP is een oplossing maar kan alleen GET
CORS maakt het mogelijk om naar een andere server te gaanDe service voegt een extra HTTP header toeAls die ontbreekt blokeert de browser de
response
Real time communicationsWaarom wachten tot een gebruiker de pagina
ververst?De server kan wijzigingen ook naar de browser
sturenIn HTML5 hebben we WebSockets
Maar de ondersteuning is nog beperktSignalR is een goede communicatie library
Gebruikt WebSockets indien mogelijkGebruikt anders een fallback communicatie
ConclusieREST services zijn zeer flexibel
En dat is maar goed ook met alle tablets en smartphones
De ASP.NET Web API is een prima frameworkEn er zijn genoeg alternatieven
Browsers hebben hun kurenTest met verschillende browsers
Real time communicatie heeft de toekomst
Vragen [email protected]
Top Related