HTML5 & rest services

23
HTML 5 & REST services Maurice de Beijer

description

Dutch presentation about REST services, HTML5 clients and using SignalR to create HTML clients.

Transcript of HTML5 & rest services

Page 1: HTML5 & rest services

HTML 5 & REST servicesMaurice de Beijer

Page 2: HTML5 & rest services

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

Page 3: HTML5 & rest services

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]

Page 4: HTML5 & rest services

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

Page 5: HTML5 & rest services

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

Page 6: HTML5 & rest services

REST is niet nieuwArchitectural Styles and the Design of

Network-based Software ArchitecturesBy Roy Thomas FieldingChapter 5

Een van de schrijvers van deHTTP specificaties

Page 7: HTML5 & rest services

Basis begrippenResource = data

Bv: een product of een klantRepresentation = het weergave formaat

Bv: XML, JSONMaar ook een PDF of een vCard

Page 8: HTML5 & rest services

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

Page 9: HTML5 & rest services

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}"

Page 10: HTML5 & rest services

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

Page 11: HTML5 & rest services

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

Page 12: HTML5 & rest services
Page 13: HTML5 & rest services

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

Page 14: HTML5 & rest services
Page 15: HTML5 & rest services

Pauze

Page 16: HTML5 & rest services

Browsers en RESTSoms vergeet een browser de juiste Accept

headerHTML != HTTPCaching

Page 17: HTML5 & rest services

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.

Page 18: HTML5 & rest services

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()

Page 19: HTML5 & rest services

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

Page 20: HTML5 & rest services

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

Page 21: HTML5 & rest services

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

Page 22: HTML5 & rest services

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

Page 23: HTML5 & rest services

Vragen [email protected]