Lista de parámetros en servicio RESTful JAX-RS

06/Nov/2015 Java , , , , , Deja un comentario

En otros ejemplos ya hemos visto como pasar parámetros a servicios RESTful en JAX-RS, ya sea en parámetros dentro de la URI o bien con parámetros como query. En este caso vamos a ver cómo podemos controlar una lista de parámetros en servicio RESTful JAX-RS, es decir, cómo pasar a un servicio RESTful una lista de valores.

Por ejemplo imaginemos que hemos creado un formulario y el usuario puede añadir una serie de items, los cuales se quieren pasar al servicio RESTful. Vamos a ver cómo podemos comunicarle esa lista de parámetros.

No vamos a entrar en detalle de cómo configurar tu entorno para poder crear servicios RESTful con JAX-RS. Pero si es la primera vez que te enfrentas a este tipo de ejemplos es "obligatorio" que te leas el artículo Servicios RESTful con Tomcat 7 y Jersey para saber cómo configurar tu entorno de ejecución.

Lo primero para realizar una clase que nos controle una lista de parámetros en servicio RESTful JAX-RS. Para convertir esta clase en un servicio RESTful utilizamos la anotación @Path

  1. @Path("/lista")
  2. public class ListaParametroQueryRest { ... }

Ahora creamos un método que atienda las peticiones de tipo GET, lo cual gestionamos mediante la anotación @Get y que nos devuelva un contenido en HTML, para lo que utilizamos la anotación @Produces

  1. @GET
  2. @Produces("text/html")
  3. public String getItems() {... }

Para la gestión de lista de parámetros en servicio RESTful JAX-RS vamos a apoyarnos en los parámetros por query, así que utilizaremos una anotación @QueryParam. La estructura será:

/lista?item=valor1&item=valor2&item=valor3

Así el parámero que controlamos con @QueryParam es item, pero con una salvedad, que al ser N tendremos que indicar que es una lista. Así que la signatura de nuestro método nos quedará de la siguiente forma:

  1. @GET
  2. @Produces("text/html")
  3. public String getItems(@QueryParam("item") List<String> items) { ... }

Ya solo tendremos que recorrer los elementos de la lista para poder acceder a los valores. Para ello utilizamos un bucle for-each.

  1. @GET
  2. @Produces("text/html")
  3. public String getItems(@QueryParam("item") List<String> items) {
  4.  
  5. sb.append("<html lang=\"en\"><body><h1>Lista de Items</h1><p>Los items adquiridos son:</p><ul>");
  6.  
  7. for (String item:items)
  8. sb.append("<li>").append(item).append("</li>");
  9.  
  10. sb.append("</ul></body></html>");
  11.  
  12. return sb.toString();
  13. }

De esta forma ya habremos conseguido tener una clase que gestione una lista de parámetros en servicio RESTful JAX-RS.

Vídeos sobre Java


¿Algo que nos quieras comentar?

Déjanos tu comentario, no te preocupes que tu email no será publicado

*

*