Estoy construyendo un servicio web genérico y necesito reunir todos los parámetros de consulta en una cadena para analizarlos posteriormente. ¿Cómo puedo hacer esto?
Respuestas:
Puede acceder a un solo parámetro a través de @QueryParam("name")
o todos los parámetros a través del contexto:
@POST
public Response postSomething(@QueryParam("name") String name, @Context UriInfo uriInfo, String content) {
MultivaluedMap<String, String> queryParams = uriInfo.getQueryParameters();
String nameParam = queryParams.getFirst("name");
}
La clave es la @Context
anotación jax-rs , que se puede utilizar para acceder a:
UriInfo, Solicitud, HttpHeaders, SecurityContext, Proveedores
Añadiendo un poco más a la respuesta aceptada. También es posible obtener todos los parámetros de consulta de la siguiente manera sin agregar un parámetro adicional al método que puede ser útil al mantener la documentación de swagger.
@Context
private UriInfo uriInfo;
@POST
public Response postSomething(@QueryParam("name") String name) {
MultivaluedMap<String, String> queryParams = uriInfo.getQueryParameters();
String nameParam = queryParams.getFirst("name");
}