Una de las formas de pasarle parámetros a un servicio RESTful es en la propia URL en un formato /servicio/parametro, pero otra de las formas es pasar los parámetros dentro de la URL pero en formato query. Que sería un formato del estilo /servicio?parametro=valor.
Así que vamos a crear un servicio RESTful en JAX-RS con parámetros query. Para ello vamos a ejecutar dos pasos, en el primero configuraremos el entorno de ejecución y en el segundo codificaremos el servicio RESTful.
Configurando el entorno
Lo primero que tenemos que hacer para crear un servicio RESTful en JAX-RS con parámetros query es configurar el entorno de Jersey, que es la implementación que vamos a utilizar para ejecutar nuestro código de servicio RESTful.
Deberemos de descargarnos las dependencias. En este caso utilizaremos un proyecto Maven y añadiremos al POM la siguiente dependencia, la cual descargará todas las librerías de Jersey.
com.sun.jersey
jersey-server
1.8
Ahora vamos a configurar el Servlet de Jersey que atiende las peticiones de los servicios RESTful.
Te recomiendo que eches un ojo al artículo Servicios RESTful con Tomcat 7 y Jersey.
Jersey REST Service
com.sun.jersey.spi.container.servlet.ServletContainer
com.sun.jersey.config.property.packages
com.lineadecodigo.javaee.rest
1
Jersey REST Service
/rest/*
El parámetro com.sun.jersey.config.property.packages
deberá apuntar al paquete raíz dónde estés creando los servicios RESTful.
Codificando un Servicio RESTful en JAX-RS con parámetros query
Lo primero para crear un Servicio RESTful en JAX-RS con parámetros query será definir una clase y mediante la anotación @Path
indicarle la URL dónde atenderá el servicio. En este caso no indicamos, de momento, nada para los parámetros query.
@Path("/saludo")
public class ParametroQueryRest { ... }
Ahora vamos a crear un método que atienda a las peticiones GET y que recupere los parámetros de la Query. Este parámetro tiene que tener dos anotaciones @GET
para indicar que es el que atiende ese tipo de peticiones y @Produces
para indicar el tipo de respuesta que genera, en este caso text/html
.
@GET
@Produces("text/html")
public String getSaludo() { ... }
Ahora utilizaremos la anotación @QueryParam
para indicar dentro de los parámetros del método cual corresponde al parámetro de la query.
@GET
@Produces("text/html")
public String getSaludo(@QueryParam("nombre") String nombre) {
return "Hola " + nombre + "
";
}
Como podemos observar indicamos mediante la anotación @QueryParam
que buscamos el parámetro nombre en la query y usaremos el parámetro del método para generar la respuesta.
Ya solo nos quedará ejecutar e invocar a nuestro servicio RESTful /saludo?nombre=Luis