Servicios RESTBases de la tecnología   con Spring MVCJosé Ramón Berenguer   Ana María Gómez
¿Qué es REST?
¿Por qué REST?                                        REST(CATE)       WSDL   UDDI            Representational State Trans...
Principios REST• Protocolo cliente/servidor sin estado  Cada mensaje HTTP contiene toda la información necesaria  para com...
¿Cuándo usamos REST? Servicio Web sin estado     Requerimientos Productor y consumidor      complejos no funcionales:  c...
REST + Spring
REST en Spring MVC                                      Configuración  web.xml                          <?xml version="1.0...
REST en Spring MVC                         Configuración*-context.xml             <?xml version="1.0" encoding="UTF-8"?>  ...
REST en Spring MVC                           Configuraciónpom.xml               <?xml version="1.0" encoding="UTF-8"?>    ...
REST en Spring MVC 3.0                     Controladores •   @PathVariable •   Negociación del contenido •   @RequestBody/...
Hello REST!
Servicio REST con Spring MVC     Caso práctico
Diseño de la interfaz                                                    TVShow• Identificar entidades                   •...
¿Preguntas?
Upcoming SlideShare
Loading in...5
×

SEMINARIO: Servicios REST. Bases de la tecnología y soporte con Spring MVC

852

Published on

En este seminario se impartirá una introducción al concepto detrás de la tecnología REST. Adicionalmente, se introducirá al asistente a la implementación de un servicio REST, usando para ello el stack que ofrece el framework Spring, y mas concretamente las nuevas versiones de Spring MVC”. Con este seminario abrimos el nuevo curso 2012/2013, en el que Paradigma irá cada tres semanas aproximadamente ofreciendo una temática nueva.
Más información: http://www.paradigmatecnologico.com/seminarios/seminario-servicios-rest-bases-de-la-tecnologia-y-soporte-con-spring-mvc/

1 Comment
0 Likes
Statistics
Notes
  • Gran slide... Aquí te dejo un ejemplo del mismo tema, con una breve implementación de REST en Spring 3: Exponer un servicio web REST con Spring 3... Saludos :)
       Reply 
    Are you sure you want to  Yes  No
    Your message goes here
  • Be the first to like this

No Downloads
Views
Total Views
852
On Slideshare
0
From Embeds
0
Number of Embeds
1
Actions
Shares
0
Downloads
15
Comments
1
Likes
0
Embeds 0
No embeds

No notes for slide

Transcript of "SEMINARIO: Servicios REST. Bases de la tecnología y soporte con Spring MVC"

  1. 1. Servicios RESTBases de la tecnología con Spring MVCJosé Ramón Berenguer Ana María Gómez
  2. 2. ¿Qué es REST?
  3. 3. ¿Por qué REST? REST(CATE) WSDL UDDI Representational State Transfer Roy Fielding , 2000 SOAP• Verbose • Sencillez Técnica de arquitectura software para• Complejidad • Eficiencia sistemas hipermedia distribuidos como la Word Wide Web• Alta curva de aprendizaje • Aprovecha características• Dificil de mantener de la infraestructura Web• Alto consumo de recursos• No optimizado para web
  4. 4. 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.
  5. 5. ¿Cuándo usamos REST? Servicio Web sin estado Requerimientos Productor y consumidor complejos no funcionales: conocen el contexto y Transacciones contenido Información contextual Ancho de banda Estado importante y necesita ser Contrato formal con limitado funcionalidad de la Distribución de Servicios interfaz (WSDL) Web o agregación de Procesado asíncrono sitios Web existentes
  6. 6. REST + Spring
  7. 7. REST en Spring MVC Configuración web.xml <?xml version="1.0" encoding="UTF-8"?> <web-app version="2.5" xmlns="http://java.sun.com/xml/ns/javaee" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd"> <!-- The definition of the Root Spring Container shared by all Servlets and Filters --><context-param> <context-param> <param-name>contextConfigLocation</param-name> <servlet> <param-name>contextConfigLocation</param-name> <param-value>/WEB-INF/spring/root-context.xml</param-value> </context-param> <servlet-name>appServlet</servlet-name> <param-value>/WEB-INF/spring/root-context.xml</param-value> <!-- Creates the Spring Container shared by all Servlets and Filters --> <servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class><listener></context-param> <listener><listener-class>org.springframework.web.context.ContextLoaderListener</listener-class> <init-param> </listener> <listener-class>org.springframework.web.context.ContextLoaderListener</listener-class></listener><param-name>contextConfigLocation</param-name> <!-- Processes application requests --> <servlet> <param-value>/WEB-INF/spring/appServlet/servlet-context.xml</param-value> <servlet-name>appServlet</servlet-name> </init-param> <servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class> <init-param> <param-name>contextConfigLocation</param-name> <load-on-startup>1</load-on-startup> <param-value>/WEB-INF/spring/appServlet/servlet-context.xml</param-value> </init-param> </servlet> <load-on-startup>1</load-on-startup> </servlet> <servlet-mapping> <servlet-mapping> <servlet-name>appServlet</servlet-name> <url-pattern>/</url-pattern> <servlet-name>appServlet</servlet-name> </servlet-mapping> <url-pattern>/</url-pattern> </web-app> </servlet-mapping>
  8. 8. REST en Spring MVC Configuración*-context.xml <?xml version="1.0" encoding="UTF-8"?> <beans:beans xmlns="http://www.springframework.org/schema/mvc" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:beans="http://www.springframework.org/schema/beans" xmlns:context="http://www.springframework.org/schema/context" xsi:schemaLocation="http://www.springframework.org/schema/mvc http://www.springframework.org/schema/mvc/spring-mvc-3.0.xsd http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans- 3.0.xsd http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring- context-3.0.xsd"> <!-- DispatcherServlet Context: defines this servlets request-processing infrastructure --> <annotation-driven@Controller programming model --> <!-- Enables the Spring MVC <annotation-driven /> /> <beans:beanHTTP GET requests for /resources/** by efficiently serving up static resources in the <context:component-scan base-package="com.paradigma.example" /> <!-- Handles class="org.springframework.web.servlet.view.InternalResourceViewResolver"> ${webappRoot}/resources directory --> <resources mapping="/resources/**" location="/resources/" /> <beans:property name="prefix" value="/WEB-INF/views/" />--> <!-- Resolves views selected for rendering by @Controllers to .jsp resources in the /WEB-INF/views directory <beans:property name="suffix" value=".jsp" /> <beans:bean class="org.springframework.web.servlet.view.InternalResourceViewResolver"> <beans:property name="prefix" value="/WEB-INF/views/" /> </beans:bean>name="suffix" value=".jsp" /> <beans:property </beans:bean> <context:component-scan base-package="com.paradigma.example" /> </beans:beans>
  9. 9. REST en Spring MVC Configuraciónpom.xml <?xml version="1.0" encoding="UTF-8"?> <project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd"> <modelVersion>4.0.0</modelVersion> <groupId>com.paradigma</groupId> <artifactId>example</artifactId> <name>example</name> <packaging>war</packaging> <properties> <version>1.0.0-BUILD-SNAPSHOT</version> <properties> <java-version>1.6</java-version> <java-version>1.6</java-version> <org.springframework-version>3.1.0.RELEASE</org.springframework-version> <dependency> <org.aspectj-version>1.6.9</org.aspectj-version> <org.springframework-version>3.1.0.RELEASE</org.springframework-version> <org.slf4j-version>1.5.10</org.slf4j-version> <groupId>org.codehaus.jackson</groupId> </properties> <org.aspectj-version>1.6.9</org.aspectj-version> <dependencies> <artifactId>jackson-mapper-asl</artifactId> <!-- Spring --> <org.slf4j-version>1.5.10</org.slf4j-version> <dependency> <version>1.6.4</version> </properties> <groupId>org.springframework</groupId> <artifactId>spring-context</artifactId> <version>${org.springframework-version}</version> </dependency> <exclusions> <!-- Exclude Commons Logging in favor of SLF4j --> <exclusion> <groupId>commons-logging</groupId> <artifactId>commons-logging</artifactId> </exclusion> </exclusions> </dependency> <dependency> <groupId>org.springframework</groupId> <artifactId>spring-webmvc</artifactId> <version>${org.springframework-version}</version> </dependency> ….. <plugins>plugins> </build> </project>
  10. 10. 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 = "/{id}", methodmethod = RequestMethod.GET)= "application/xml") @RequestMapping(value "/{id}", = RequestMethod.GET ,produces @RequestMapping(value = = “/", method = RequestMethod.GET) @ResponseBody @PathVariable public Person person(@RequestParam String id, Model model) {…} }
  11. 11. Hello REST!
  12. 12. Servicio REST con Spring MVC Caso práctico
  13. 13. Diseño de la interfaz TVShow• Identificar entidades • id •name • genre conceptuales • year • rates• 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
  14. 14. ¿Preguntas?
  1. A particular slide catching your eye?

    Clipping is a handy way to collect important slides you want to go back to later.

×