Diferencia entre revisiones de «Restful con Spring Roo»
(→Configuracion) |
|||
Línea 44: | Línea 44: | ||
</code> | </code> | ||
− | * | + | * 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: |
+ | |||
+ | <code java> | ||
+ | @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"; | ||
+ | } | ||
+ | </code> | ||
+ | |||
+ | === Uso === | ||
+ | |||
+ | Entonces, basándonos en la anotación @RequestMapping y en el formato [[JSON]]: | ||
<code> | <code> | ||
+ | //Un pedido existente con id=1 | ||
http://localhost:8080/demoPizzaOracle/pedido/1.json | http://localhost:8080/demoPizzaOracle/pedido/1.json | ||
{"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 | ||
http://localhost:8080/demoPizzaOracle/pedido/99.json | http://localhost:8080/demoPizzaOracle/pedido/99.json | ||
{"pedido":null,"pedido_fechaEntrega_date_format":"dd/MM/yy"} | {"pedido":null,"pedido_fechaEntrega_date_format":"dd/MM/yy"} |
Revisión del 15:11 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
{"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 {"pedido":null,"pedido_fechaEntrega_date_format":"dd/MM/yy"}