Je suis en train de construire un service Web générique et j'ai besoin de saisir tous les paramètres de requête dans une chaîne pour une analyse ultérieure. Comment puis-je faire ceci?
Vous pouvez accéder à un seul paramètre via @QueryParam("name")
ou à tous les paramètres via le contexte:
@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 clé est l'annotation @Context
jax-rs , qui peut être utilisée pour accéder à:
UriInfo, Request, HttpHeaders, SecurityContext, Fournisseurs
La partie requête non analysée de l'URI de la demande peut être obtenue à partir de l'objet UriInfo
:
@GET
public Representation get(@Context UriInfo uriInfo) {
String query = uriInfo.getRequestUri().getQuery();
...
}
Ajoutant un peu plus à la réponse acceptée. Il est également possible d'obtenir tous les paramètres de requête de la manière suivante sans ajouter de paramètre supplémentaire à la méthode, ce qui peut s'avérer utile lors de la maintenance de la documentation swagger.
@Context
private UriInfo uriInfo;
@POST
public Response postSomething(@QueryParam("name") String name) {
MultivaluedMap<String, String> queryParams = uriInfo.getQueryParameters();
String nameParam = queryParams.getFirst("name");
}