Sto creando un servizio web generico e ho bisogno di prendere tutti i parametri di query in una stringa per un'analisi successiva. Come posso fare questo?
Risposte:
È possibile accedere a un singolo parametro tramite @QueryParam("name")
o a tutti i parametri tramite il contesto:
@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 chiave è l' @Context
annotazione jax-rs , che può essere utilizzata per accedere:
UriInfo, Request, HttpHeaders, SecurityContext, Providers
Aggiungendo un po 'di più alla risposta accettata. È anche possibile ottenere tutti i parametri della query nel modo seguente senza aggiungere un parametro aggiuntivo al metodo che potrebbe essere utile quando si mantiene una documentazione spavalda.
@Context
private UriInfo uriInfo;
@POST
public Response postSomething(@QueryParam("name") String name) {
MultivaluedMap<String, String> queryParams = uriInfo.getQueryParameters();
String nameParam = queryParams.getFirst("name");
}