• Like
SEMINARIO: Servicios REST. Bases de la tecnología y soporte con Spring MVC
Upcoming SlideShare
Loading in...5
×

Thanks for flagging this SlideShare!

Oops! An error has occurred.

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

  • 685 views
Published

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 …

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/

  • Full Name Full Name Comment goes here.
    Are you sure you want to
    Your message goes here
  • 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 :)
    Are you sure you want to
    Your message goes here
    Be the first to like this
No Downloads

Views

Total Views
685
On SlideShare
0
From Embeds
0
Number of Embeds
1

Actions

Shares
Downloads
11
Comments
1
Likes
0

Embeds 0

No embeds

Report content

Flagged as inappropriate Flag as inappropriate
Flag as inappropriate

Select your reason for flagging this presentation as inappropriate.

Cancel
    No notes for slide

Transcript

  • 1. Servicios RESTBases de la tecnología con Spring MVCJosé Ramón Berenguer Ana María Gómez
  • 2. ¿Qué es REST?
  • 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. 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. ¿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. REST + Spring
  • 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. 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. 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. 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. Hello REST!
  • 12. Servicio REST con Spring MVC Caso práctico
  • 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. ¿Preguntas?