Slide 1

Slide 1 text

Servicios REST Bases de la tecnología con Spring MVC José Ramón Berenguer Ana María Gómez

Slide 2

Slide 2 text

¿Qué es REST?

Slide 3

Slide 3 text

¿Por qué REST? WSDL UDDI SOAP • Verbose • Complejidad • Alta curva de aprendizaje • Dificil de mantener • Alto consumo de recursos • No optimizado para web REST(CATE) Representational State Transfer Roy Fielding , 2000 • Sencillez • Eficiencia • Aprovecha características de la infraestructura Web Técnica de arquitectura software para sistemas hipermedia distribuidos como la Word Wide Web

Slide 4

Slide 4 text

Principios REST • Protocolo cliente/servidor sin estado Cada mensaje HTTP contiene toda la información necesaria para comprender la petición. Ni cliente ni servidor necesitan recordar ningún estado. • Operaciones bien definidas HTTP en sí define un conjunto de operaciones: POST, GET, PUT y DELETE. • Sintaxis universal Cada recurso es direccionable únicamente a través de su URI. • Soporte multiformato HTML, XML, etc.

Slide 5

Slide 5 text

¿Cuándo usamos REST?  Servicio Web sin estado  Productor y consumidor conocen el contexto y contenido  Ancho de banda importante y necesita ser limitado  Distribución de Servicios Web o agregación de sitios Web existentes Requerimientos complejos no funcionales: Transacciones Información contextual Estado Contrato formal con funcionalidad de la interfaz (WSDL) Procesado asíncrono

Slide 6

Slide 6 text

REST + Spring

Slide 7

Slide 7 text

REST en Spring MVC Configuración web.xml contextConfigLocation /WEB-INF/spring/root-context.xml org.springframework.web.context.ContextLoaderListener appServlet org.springframework.web.servlet.DispatcherServlet contextConfigLocation /WEB-INF/spring/appServlet/servlet-context.xml 1 appServlet / org.springframework.web.context.ContextLoaderListener contextConfigLocation /WEB-INF/spring/root-context.xml appServlet org.springframework.web.servlet.DispatcherServlet contextConfigLocation /WEB-INF/spring/appServlet/servlet-context.xml 1 appServlet /

Slide 8

Slide 8 text

REST en Spring MVC Configuración *-context.xml

Slide 9

Slide 9 text

REST en Spring MVC Configuración pom.xml 4.0.0 com.paradigma example example war 1.0.0-BUILD-SNAPSHOT 1.6 3.1.0.RELEASE 1.6.9 1.5.10 org.springframework spring-context ${org.springframework-version} commons-logging commons-logging org.springframework spring-webmvc ${org.springframework-version} ….. plugins> 1.6 3.1.0.RELEASE 1.6.9 1.5.10 org.codehaus.jackson jackson-mapper-asl 1.6.4

Slide 10

Slide 10 text

REST en Spring MVC 3.0 Controladores • @PathVariable • Negociación del contenido • @RequestBody/@ResponseBody/@ResponseStatus • Validación en la declaración: @Valid @Controller @RequestMapping("/person") public class PersonController { @RequestMapping(value = “/", method = RequestMethod.GET) public Person person(@RequestParam String id, Model model) {…} } @RequestMapping(value = "/{id}", method = RequestMethod.GET) @PathVariable @RequestMapping(value = "/{id}", method = RequestMethod.GET ,produces = "application/xml") @ResponseBody

Slide 11

Slide 11 text

Hello REST!

Slide 12

Slide 12 text

Servicio REST con Spring MVC Caso práctico

Slide 13

Slide 13 text

Diseño de la interfaz • Identificar entidades conceptuales • Crear una URI para cada recurso (nombres, no verbos) https://www.myrest.com/tvshowrest/provider/tvshow/{id} • Definir que métodos son soportados por cada URI GET, PUT y DELETE • Formato de cada recurso XML • id •name • genre • year • rates TVShow

Slide 14

Slide 14 text

¿Preguntas?