Как я могу захватить все параметры запроса в JaxRS в Джерси?

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

Ответ 1

Вы можете получить доступ к одному параметру через @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, Request, HttpHeaders, SecurityContext, Провайдеры

Ответ 2

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

@GET
public Representation get(@Context UriInfo uriInfo) {
  String query = uriInfo.getRequestUri().getQuery();
  ...
}

Ответ 3

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

@Context
private UriInfo uriInfo;

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

ссылка