RESTful webservices med JAX-RS

Post on 03-Jan-2016

78 views 0 download

description

RESTful webservices med JAX-RS. En introduktion Av Martin Wahlman, Java-teamet. Agenda. RESTful webservices Introduktion Användningsområden JAX-RS Bakgrund Api:et Implementationer Exempel Frågor!. Introduktion. RESTful webservices. Webservices finns överallt!. - PowerPoint PPT Presentation

Transcript of RESTful webservices med JAX-RS

RESTful webservices med JAX-RS

En introduktionAv Martin Wahlman, Java-teamet

Agenda

• RESTful webservices– Introduktion– Användningsområden

• JAX-RS– Bakgrund– Api:et– Implementationer– Exempel

• Frågor!

RESTFUL WEBSERVICESIntroduktion

Webservices finns överallt!

SOAP har funnits länge

Baserat på XMLMycket pratigt!

<?xml version="1.0"?><soap:Envelope xmlns:soap="http://www.w3.org/2003/05/soap-envelope"> <soap:Header> </soap:Header> <soap:Body> <m:GetStockPrice xmlns:m="http://www.example.org/stock"> <m:StockName>IBM</m:StockName> </m:GetStockPrice> </soap:Body></soap:Envelope>

Väletablerat

SoapUI används för att testa webservicen

Metodbaserat

RESTful, ett annat sätt att tänka webservices

Använder valigtvis HTTP-protokollet

GET

POST

DELETE

PUT

Returnerar vanligtvis XML eller JSON

Mer frihet

Mindre pratigt = mindre bandbredd

Använder en browser för att testa

Lösare definierat

En arkitektur, inte ett protokollEn URI definierar en resurs (substantiv) inte en aktion (verb)

Riktlinjer för RESTful webservices

Client – Server

Stateless

Cacheable

Uniform Interface

DatabasServerKlient GET en bil av en viss modell Select car

Representation av bilen

POST ändring av färg på bilen Update carOperationen lyckadPUT ny bil

Insert carOperationen lyckad

DELETE bil Remove car

Operationen lyckad

Användningsområden

Rika Webbapplikationer

Mobila applikationer

Överhuvudtaget applikationer med ett rikt klientgränssnitt!

Klientapplikationer som behöver ett snabbt och lätt API mot servern

För och nackdelar

+ Du är inte beroende av XML och SOAP.+ Lätt-testat från browsern.+ Mycket standardiserat protokoll, GET, PUT, POST, DELETE.+ Liten overhead.+ Enkel och lättförståelig arkitektur.+ Gömmer inget under ytan

- Det kan ibland vara svårt att tänka resurser och inte funktioner.- Det finns ingen standardiserad implementation.- WSDL har ett mycket välstrukturerat innehåll.- WSDL har ett mycket väldefinierat kontrakt.- Protokoll beroende.

JAX-RSEtt Java API för RESTful services

Ett Java-API för RESTful services

Använder annotations

Annotations: Ett sätt att konfigurera ramverk direkt i java-klasser.

JAX-RS 1.1 med som standard i Java EE 6

JAX-RS 2.0 är på G! Planerad release mitten av 2012

Annoteringar i API:et

• @Path – Ingången till en RESTful service. Här anger du vilken path som ska vara accesspunkt till denna resurs i servicen.

• @GET, @PUT, @POST, @DELETE, @HEAD – Beskriver typ av accesspunkt.

• @Produces – Vilken mimetype som funktionen ska returnera. Kan exempelvis vara JSON, XML eller text.

• @Consumes – Vilken mimetype som kan tas emot av funktionen.

• @PathParam, @QueryParam, @MatrixParam, @HeaderParam, @CookieParam, @FormParam, @DefaultValue – Används för att binda parametrar som kommer med requestet till paramterar i funktionen.

Implementationer av JAX-RS

Apache CXF- Större biblotek som inkluderar flera specifikationer såsom JAX-WS, JAX-RS.- Inte bara ett REST bibliotek. Mest känd för sin SOAP funktionalitet.

Jersey- Oracles (tidigare suns) referens-implementation. Skeppas INTE med JDK:n.- Integrerar väl med Spring.- Lätt att extenda.

RESTEasy- JBOSS implementation av JAX-RS.- Lätt att börja använda om man använder JBOSS och Seam sen tidigare.

Restlet- OpenSource ramverk som är lite av en pionjär. Fanns innan JAX-RS.- Mycket bra och aktivt community.

Nyheter i 2.0?

Ett API för klient-applikationer i JAVA

Hanterare (filter)

Validering av data genom Bean Validation API

Förbättrat stöd för Java Dependency Injection API

Exempel!

FRÅGOR!