Как я могу получить все параметры запроса в Джерси JaxRS? - PullRequest
87 голосов
/ 19 апреля 2011

Я создаю универсальный веб-сервис и мне нужно собрать все параметры запроса в одну строку для последующего анализа.Как я могу это сделать?

Ответы [ 3 ]

151 голосов
/ 19 апреля 2011

Вы можете получить доступ к одному параметру через @QueryParam("name") или ко всем параметрам через контекст:

@POST
public Response postSomething(@QueryParam("name") String name, @Context UriInfo uriInfo, String content) {
     MultivaluedMap<String, String> queryParams = uriInfo.getQueryParameters(); 
     String nameParam = queryParams.getFirst("name");
}

Ключом является аннотация @Context jax-rs , котораяможет использоваться для доступа:

UriInfo, Запрос, HttpHeaders, SecurityContext, Поставщики

32 голосов
/ 29 мая 2013

Непарсированная часть запроса URI запроса может быть получена из объекта UriInfo:

@GET
public Representation get(@Context UriInfo uriInfo) {
  String query = uriInfo.getRequestUri().getQuery();
  ...
}
1 голос
/ 25 января 2019

Добавление немного больше к принятому ответу. Также можно получить все параметры запроса следующим образом, не добавляя в метод дополнительный параметр, который может быть полезен при ведении документации по чванству.

@Context
private UriInfo uriInfo;

@POST
public Response postSomething(@QueryParam("name") String name) {
     MultivaluedMap<String, String> queryParams = uriInfo.getQueryParameters(); 
     String nameParam = queryParams.getFirst("name");
}

исх

...