Diferencia entre revisiones de «Restful con Spring Roo»

De Dos Ideas.
Saltar a: navegación, buscar
(Configuracion)
(Uso)
 
Línea 61: Línea 61:
  
 
<code>
 
<code>
//Un pedido existente con id=1
+
//Un pedido existente con id=1:
 
http://localhost:8080/demoPizzaOracle/pedido/1.json
 
http://localhost:8080/demoPizzaOracle/pedido/1.json
  
 +
//Archivo de respuesta:
 
{"pedido":{"nombre":"uno","direccion":"bulnes ","importe":10.0,"fechaEntrega":1280291400000,"pizzas":[],"id":1,"version":0},"pedido_fechaEntrega_date_format":"dd/MM/yy"}
 
{"pedido":{"nombre":"uno","direccion":"bulnes ","importe":10.0,"fechaEntrega":1280291400000,"pizzas":[],"id":1,"version":0},"pedido_fechaEntrega_date_format":"dd/MM/yy"}
  
//Un pedido inexistente con id=99
+
 
 +
//Un pedido inexistente con id=99:
 
http://localhost:8080/demoPizzaOracle/pedido/99.json
 
http://localhost:8080/demoPizzaOracle/pedido/99.json
 +
 +
//Archivo de respuesta:
 
{"pedido":null,"pedido_fechaEntrega_date_format":"dd/MM/yy"}
 
{"pedido":null,"pedido_fechaEntrega_date_format":"dd/MM/yy"}
 
</code>
 
</code>

Revisión actual del 15:13 29 jul 2010

Tomamos el Ejemplo de proyecto web ABM con Spring Roo y configuramos la aplicación para exponer los servicios.

Configuracion

  • Agregamos el uso de JSON en webmvc-config.xml, para poder formatear el archivo de salida:

<bean class="org.springframework.web.servlet.view.ContentNegotiatingViewResolver">

     <property name="mediaTypes">
     <map>
     <entry key="json" value="application/json"/>
     </map>
     </property>
     <property name="defaultViews">
     <list>
     <bean class="org.springframework.web.servlet.view.json.MappingJacksonJsonView" />
     </list>
     </property>

</bean>

  • Agregamos las depencias en pom.xml:

<dependency>

   <groupId>org.codehaus.jackson</groupId>
   <artifactId>com.springsource.org.codehaus.jackson</artifactId>
   <version>1.0.0</version>
  </dependency>
  <dependency>
   <groupId>org.codehaus.jackson</groupId>
   <artifactId>com.springsource.org.codehaus.jackson.mapper</artifactId>
   <version>1.0.0</version>
  </dependency>       

  • Hacemos el re-deploy de la aplicación y se actualiza el repositorio de Maven con las librerias que agregamos antes:

roo> perform clean roo> perform package roo> quit mvn tomcat:run

  • Cuando se generó el proyecto con Roo, el aspecto del controller de la entidad "Pedido", vimos que la anotación ya contenía los métodos HTTP correctos para cada operación:

   @RequestMapping(value = "/pedido/{id}", method = RequestMethod.GET)
   public String PedidoController.show(@PathVariable("id") Long id, ModelMap modelMap) {
       if (id == null) throw new IllegalArgumentException("An Identifier is required");
       modelMap.addAttribute("pedido_fechaEntrega_date_format", org.joda.time.format.DateTimeFormat.patternForStyle("S-", org.springframework.context.i18n.LocaleContextHolder.getLocale()));
       modelMap.addAttribute("pedido", Pedido.findPedido(id));
       return "pedido/show";
   }

Uso

Entonces, basándonos en la anotación @RequestMapping y en el formato JSON:

//Un pedido existente con id=1: http://localhost:8080/demoPizzaOracle/pedido/1.json

//Archivo de respuesta: {"pedido":{"nombre":"uno","direccion":"bulnes ","importe":10.0,"fechaEntrega":1280291400000,"pizzas":[],"id":1,"version":0},"pedido_fechaEntrega_date_format":"dd/MM/yy"}


//Un pedido inexistente con id=99: http://localhost:8080/demoPizzaOracle/pedido/99.json

//Archivo de respuesta: {"pedido":null,"pedido_fechaEntrega_date_format":"dd/MM/yy"}

Ver tambien