Click here to load reader

RESTful webservices med JAX-RS

  • View
    71

  • Download
    0

Embed Size (px)

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

Text of RESTful webservices med JAX-RS

RESTful webservices med JAX-RS

RESTful webservices med JAX-RSEn introduktionAv Martin Wahlman, Java-teamet1AgendaRESTful webservicesIntroduktionAnvndningsomrdenJAX-RSBakgrundApi:etImplementationerExempelFrgor!

2RESTful webservicesIntroduktion3Webservices finns verallt!Webservices finns idag i nstan alla projekt som involverar ngon form av webb-utveckling.Hur mnga hr inne har jobbat med webservices?Hur mnga har jobbat med RESTful webservices?4SOAP har funnits lngeBaserat p XMLMycket pratigt!

IBM

VletableratSoapUI anvnds fr att testa webservicenMetodbaseratSOAP har varit mer eller mindre standardprotokollet vad gller webservices bde i microsoft och java vrlden.Definierades fr frsta gngen 1998.Blev en W3C rekommendation 2003.Protokollet r baserat p en XML-struktur. Bde frga och svar r en XML-struktur.Sttet man vanligtvis skriver SOAP webservices r metodbaserat. Man anropar en metod, ngonting grs och data returneras.Verktyget SoapUI anvnds vanligtvis fr att testa webservicen.En nackdel med SOAP r att det blir vldigt pratigt. Om man tittar direkt p de meddelanden som skickas mellan server och klient s r de svra att frst. Finns massor av hjlpbibliotek som gmmer dessa svrigheter. Faktum kvarstr dock att man skickar ondigt mycket information mellan klient och server.

5RESTful, ett annat stt att tnka webservicesRESTful webservices grs p ett annat stt n vanliga SOAP webservices.

6Anvnder valigtvis HTTP-protokolletGETPOSTDELETEPUTAnvnder vanligtvis HTTP-protokollet.Andra protokoll kan anvndas s lnge riktlinjerna r uppfyllda.Anvnder vanliga GET, POST, DELETE, och PUT requests.Man anvnder ven HTTP statuskoder, request headers och response headers.

7Returnerar vanligtvis XML eller JSONMer frihetMindre pratigt = mindre bandbreddAnvnder en browser fr att testaLsare definieratRESTful webservices returnerar vanligtvis XML eller JSON men man kan anvnda vilket format man vill.Ger mer frihet d man kan vlja formatet man vill kommunicera med.JSON passar exempelvis rika webb-applikationer uppbyggda med jQuery UI.Det r mindre pratigt n SOAP d alla SOAP-taggar inte behver vara med i alla anrop och svar.Man anvnder en browser fr att testa.Det r lsare definierat p gott och ont.Man mste veta vilka parametrar som mste in i anropet.SoapUI exempelvis ger vilka parametrar man mste skicka med.

8En arkitektur, inte ett protokollEn URI definierar en resurs (substantiv) inte en aktion (verb)RESTful webservices r en arkitektur till skillnad frn SOAP som r ett protokoll.

9Riktlinjer fr RESTful webservicesDet finns ett antal riktlinjer man ska utg ifrn nr man designar en RESTful webservice.Jag tar upp de viktigaste hr.

10Client ServerKlienten ska vara helt skild frn servern. Klienten ska presentera data den hmtar frn en RESTful webservice.

11StatelessEn RESTful webservice ska vara stateless.Innebr att servern inte kommer ihg tillstnd hos klienten.Klienten ger fr varje request all information som servern behver fr att utfr sin uppgift.

12CacheableVarje request som grs br vara cachebart.

13Uniform Interface

DatabasServerKlientGET en bil av en viss modellSelect car

Representation av bilenPOST ndring av frg p bilenUpdate carOperationen lyckadPUT ny bilInsert carOperationen lyckadDELETE bilRemove carOperationen lyckadInterfacet mot webservicen ska flja vissa riktlinjer.Man ska tnka mer objektorienterat n vid vanliga SOAP webservices.GET, POST, PUT och DELETE anvnds dr dessa operationer ska spegla vad som faktiskt ska hnda.Man GET:ar exempelvis en bil baserat p dess modellnummer, man POST:ar ny information om bilens egenskaper, man PUT:ar en ny bilmodel och man DELETE:ar en bil.14AnvndningsomrdenRika WebbapplikationerMobila applikationerverhuvudtaget applikationer med ett rikt klientgrnssnitt!Klientapplikationer som behver ett snabbt och ltt API mot servernVad anvnder man RESTful webservices till??Lmpar sig mycket bra fr rika webbapplikationer dr mycket r styrt i browsern av javascript eller jQuery m.m.. D klienten hller reda p sitt eget state s lmpar sig RESTful d man frgar efter exakt det man behver nr man behver det och man ger servern all information den behver fr att ta reda p det t en.I mobila applikationer s r oftast mycket styrt i sjlva applikationen och du behver en snabb och ltt kommunikation med servern.

15Fr och nackdelar+ Du r inte beroende av XML och SOAP.+ Ltt-testat frn browsern.+ Mycket standardiserat protokoll, GET, PUT, POST, DELETE.+ Liten overhead.+ Enkel och lttfrstelig arkitektur.+ Gmmer inget under ytan- Det kan ibland vara svrt att tnka resurser och inte funktioner.- Det finns ingen standardiserad implementation.- WSDL har ett mycket vlstrukturerat innehll.- WSDL har ett mycket vldefinierat kontrakt.- Protokoll beroende.16JAX-RSEtt Java API fr RESTful services

17Ett Java-API fr RESTful servicesAnvnder annotationsAnnotations: Ett stt att konfigurera ramverk direkt i java-klasser.JAX-RS r ett Java-API fr att skriva RESTful services.Anvnder annotations fr att definiera webservicen.Och vad r annotations? Jo ett stt att konfigurera ett ramverk direkt i en javaklass genom att skriva specificerade instruktioner fre klasser och funktioner med ett @ framfr instruktionen.18JAX-RS 1.1 med som standard i Java EE 6JAX-RS 2.0 r p G! Planerad release mitten av 2012Fr.o.m. Java EE 6 r JAX-RS en standard i java. Version 1.1 r med i Java EE 6.Att det nu r en standard innebr att man inte behver ngon extra konfiguration fr att direkt brja anvnda JAX-RS.Planerat releasedatum fr JAX-RS 2.0 r mitten av 2012.

19Annoteringar i API:[email protected] Ingngen till en RESTful service. Hr anger du vilken path som ska vara accesspunkt till denna resurs i [email protected], @PUT, @POST, @DELETE, @HEAD Beskriver typ av [email protected] Vilken mimetype som funktionen ska returnera. Kan exempelvis vara JSON, XML eller [email protected] Vilken mimetype som kan tas emot av [email protected], @QueryParam, @MatrixParam, @HeaderParam, @CookieParam, @FormParam, @DefaultValue Anvnds fr att binda parametrar som kommer med requestet till paramterar i funktionen.

@PATH en relativ skvg till resursen i webservicen. Anges p [email protected], @PUT, @POST, @DELETE, @HEAD anges p metodniv och beskriver hur den metoden ska accessas och implicit ven vad den ska utfra fr [email protected] anges p klassniv ELLER metodniv och anger vilken typ av data, mimetype, som kommer att returneras av [email protected] anges p klassniv ELLER metodniv och anger vilken typ av data, mimetype, som kan skickas in med POST eller PUTParam annoteringarna anvnds framfr parametrar till metoden och anger var dessa parametrar ska hmtas ifrn i requestet. Frmst @QueryParam och @FormParam man anvnder.

20Implementationer av JAX-RSDet finns flera implementationer av JAX-RS d det som tidigare nmnt bara r en specifikation.

21Apache CXFStrre biblotek som inkluderar flera specifikationer ssom JAX-WS, JAX-RS.Inte bara ett REST bibliotek. Mest knd fr sin SOAP funktionalitet.JerseyOracles (tidigare suns) referens-implementation. Skeppas INTE med JDK:n.Integrerar vl med Spring.Ltt att extenda.RESTEasyJBOSS implementation av JAX-RS.Ltt att brja anvnda om man anvnder JBOSS och Seam sen tidigare.RestletOpenSource ramverk som r lite av en pionjr. Fanns innan JAX-RS.Mycket bra och aktivt community.Fljande 4 implementationer finns.Apache CFX: Strvar efter enkelhet och prestanda. Stort bibliotek.Jersey: Oracles referensbibliotek. Ltt att anvnda och komma igng med. Fungerar vl med Spring och gr bra att extenda.RESTEasy: JBOSS implementation. Ltt att brja anvnda om man anvnder JBOSS och Seam.Restlet: OpenSource pionjren som brjade med RESTful services innan JAX-RS fanns. Aktivt och bra community.

Apache Wink finns ocks men r ett vldigt litet biliotek n s lngeAlla r vldigt lika!22Nyheter i 2.0?Ett API fr klient-applikationer i JAVAHanterare (filter)Validering av data genom Bean Validation APIFrbttrat std fr Java Dependency Injection APIDet finns flera implementationer av JAX-RS d det som tidigare nmnt bara r en specifikation.

23Exempel!Visa exempel!

24FRGOR!Visa exempel!

25

Search related