Servicios REST: Jersey JAX-RS

  • Published on
    26-Dec-2014

  • View
    435

  • Download
    1

Embed Size (px)

DESCRIPTION

Chara sobre servicios REST ofrecida como parte del Oracle Java Roadshow en la Universitat Jaume I

Transcript

SERVICIOS RESTJERSEY JAX-RS

YO{ nm :'iad Brlo, ae Rcro oil' cmay:'nvria JueI, opn Uiestt am ' mi :'oil@j.s, al brlouie' sca :{ oil titr:'brlo, wte @oil' bo :'m-tl.o' lg xluiscm, lnei :'ikdncmi/oil' ikdn lnei.o/nbrlo } }

YO

NDICEServicios web HTTP y REST Uso Jersey JAX-RS Testing El futuro de JAX-RS

SERVICIOS WEB

WIKIPEDIA:"Un servicio web es una tecnologa que utiliza un conjunto de protocolos y estndares que sirven para intercambiar datos entre aplicaciones. Distintas aplicaciones de software desarrolladas en lenguajes de programacin diferentes, y ejecutadas sobre cualquier plataforma, pueden utilizar los servicios web para intercambiar datos en redes de ordenadores como Internet."

DISTINTAS APROXIMACIONES:SOAP. Formato XML e independiente del protocolo. Implementado en Metro (JAX-WS) "SOAP (Simple Object Access Protocol) es un protocolo estndar que define cmo dos objetos en diferentes procesos pueden comunicarse por medio de intercambio de datos XML"

DISTINTAS APROXIMACIONES:REST. Cualquier formato sobre HTTP. Implementado en Jersey (JAX-RS) "Cualquier interfaz web simple sin las abstracciones adicionales de los protocolos basados en patrones de intercambio de mensajes"

LA GRAN VENTAJA DE REST

APROVECHA AL MXIMO LA INSFRASTRUCTURA DE HTTPSimplicidad, escalabilidad, cacheo, seguridad, ...

REST != RPCEvitar cosas como:/eUuro gtsai /eAlsais gtlAuro /oiiaunayd mdfcCetBI

En su lugar utilizamos nombres que definen recursos:/sais uuro /sais1 uuro/ /sais1fcua uuro//atrs

NO USAMOS SOAP PORQUE:Complejo y dificil de mantener (WSDL) Necesidad de un framework tambin en el cliente Problemas de interoperabilidad Problemas para ser usado desde mviles o JavaScript No aprovecha al 100% HTTP Muchsimos estndares a conocer: ws-*

HTTP Y REST

HTTP: ACCEDIENDO A CONTENIDOS EN LA WEBA travs de un navegador web: Consulta de pginas Envo de formularios Subir ficheros al servidor

HTTP: ACCEDIENDO A CONTENIDOS EN LA WEBDesde lnea de comandoscr -GTht:/w.ogee/ ul XE tp/wwgol.s

Desde algn lenguaje de programacin como JavaDfuttplethtcin =nwDfuttplet) ealHtCin tplet e ealHtCin(; HtGthtGt=nwHtGt"tp/wwgol.s"; tpe tpe e tpe(ht:/w.ogee/) HtRsos rsos =htcin.xct(tpe) tpepne epne tpleteeuehtGt;

HTTP: ACCEDIENDO A CONTENIDOS EN LA WEBO con el API cliente de Jersey JAX-RS:Cin cin =Cin.rae) let let letcet(; Wbeorewbeore=cin.eore"tp/wwgol.s"; eRsuc eRsuc letrsuc(ht:/w.ogee/) CinRsos rsos =wbeoreacp(tx/tl)gtCinRsos.ls) letepne epne eRsuc.cet"ethm".e(letepnecas; i (epnegttts)= 20 { f rsos.eSau( = 0) Sse.u.rnl(epnegtniySrn.ls); ytmotpitnrsos.eEtt(tigcas) }

REST APROVECHA LA ARQUITECTURA DE LA WEB:

REST EST ORIENTADO A RECURSOS. ESTOS SON NOMBRES, NO VERBOS. ACCIONES:GET: Recuperacin de un recurso POST: Creacin de un nuevo recurso PUT: Modificacin de un recurso o creacin si ya conocemos la clave DELETE: Eliminacin de un recurso HEAD: Envo slo de cabeceras. Muy utilizada para comprobar el Last-Modified.

EJEMPLOS:Lista todos los coches o recupera unoGT/as E cr GT/as13AW E cr/24A

Aade, modifica o elimina un cochePS /as OT cr PT/as13AW U cr/24A DLT /as13AW EEE cr/24A

INDEPENDIENTE DEL FORMATO INTERCAMBIADO:

USO

Nos centramos en nuestro negocio: Buen diseo del software Exposicin de nuestro modelo como recursos Diseo modular Soporte de varios formatos y operaciones

DISEO DE UN API

INDEPENDENCIA DE LA CAPA CLIENTE:

JERSEY JAX-RS

QU ES?Jersey es la implementacin Java de referencia del estndar JAX-RS para la definicin de servicios REST:hts/jre.e.aant tp:/esydvjv.e/

QU ES? OBJETIVOS GENERALES:Definir servicios en forma de POJOs Mapear peticiones y respuestas HTTP a esos POJOs Independencias del formato de transferencia Independiente del contenedor Parte de Java EE

QU ES?Mapear peticiones HTTP a cdigo Java @GET / @POST / @PUT / @DELETE@ah"sr" Pt(ues) pbi casUeseore ulc ls srRsuc { @E GT pbi Ls eUes) .. . } }

GT/sr E ues

QU ES?Mapear parmetros de URL a parmetros de entrada a los mtodos @PathParam / @QueryParam@E GT @ah"ues{srd" Pt(/sr/ueI}) pbi Ue gtsr ulc sr eUe( @ahaa(ueI" Srn ueI, PtPrm"srd) tig srd @urPrm"eu" @ealVle"" Srn dbg Qeyaa(dbg) Dfutau(5) tig eu) { }

GT/sr/41dbgS E ues12?eu=

QU ES?Declaracin del formato de los contenidos recibidos o emitidos @Consumes / @Produces@E GT @rdcsMdayeAPIAINXL Poue(eiTp.PLCTO_M) pbi Ls eUes) } @U PT @osmsMdayeAPIAINJO) Cnue(eiTp.PLCTO_SN pbi vi udtUe(srue){ ulc od paesrUe sr }

MAPEO DE LA PETICIN HTTP:

MAPEO DE LA RESPUESTA HTTP:

CDIGOS DE RESPUESTA HTTP:1xx Informativos 2xx De xito (200 OK, 201 Created, 202 Accepted, 204 No Content) 3xx Redirecciones (301 Moved Permanently, 302 Found, 304 Not Modified 4xx Error en cliente (400 Bad Request, 401 Unauthorized, 403 Forbidden, 404 Not Found, 405 Method Not Allowed) 5xx Error en servidor (500 Internal Server Error, 501 Not Implemented, 502 Bad Gateway, 503 Service Unavailable)

GENERACIN DE DISTINTOS FORMATOS:XML/JSON JAXB y Jackson ATOM Apache Abdera Personalizado MessageBodyReader y MessageBodyWriter

CONFIGURACIN DE UNA APLICACIN WEB JERSEYAadiendo las dependencias al proyecto descargndolas desde:ht:/esydvjv.e/ tp/jre.e.aant

Ejemplo:hts/gtu.o/oil/aaraso-ette/atreape/esysml tp:/ihbcmbrlojv-odhwrs/remse/xmlsjre-ipe

CONFIGURACIN DE UNA APLICACIN WEB JERSEYUsando Maven: o.u.esy/ruI> gopdcmsnjre vrin11 gopdcmsnjre vrin11 prmvlecmfsexljcsnjxsjo; . gopdcmsnjre.esyts-rmwr vrin11 gopdcmsnjre.esyts-rmwr vrin11