250 likes | 438 Views
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!.
E N D
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
SOAP har funnits länge Baserat på XML Mycket pratigt! SoapUI används för att testa webservicen <?xml version="1.0"?> <soap:Envelopexmlns:soap="http://www.w3.org/2003/05/soap-envelope"> <soap:Header> </soap:Header> <soap:Body> <m:GetStockPricexmlns:m="http://www.example.org/stock"> <m:StockName>IBM</m:StockName> </m:GetStockPrice> </soap:Body> </soap:Envelope> Väletablerat Metodbaserat
Använder valigtvis HTTP-protokollet GET POST PUT DELETE
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 protokoll En URI definierar en resurs (substantiv) inte en aktion (verb)
Uniform Interface Databas Server Klient Selectcar GET en bil av en viss modell Representation av bilen POST ändring av färg på bilen Updatecar Operationen lyckad PUT ny bil Insertcar Operationen lyckad Removecar DELETE bil Operationen lyckad
Användningsområden Rika Webbapplikationer Mobila applikationer Klientapplikationer som behöver ett snabbt och lätt API mot servern Överhuvudtaget applikationer med ett rikt klientgränssnitt!
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.
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.
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 DependencyInjection API