HTML5 & rest services

Post on 20-Dec-2014

3.279 views 0 download

description

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

Transcript of HTML5 & rest services

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: mauricedb@computer.org

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 ?mauricedb@computer.org