Я создаю универсальный веб-сервис, и мне нужно собрать все параметры запроса в одну строку для последующего анализа. Как я могу это сделать?
91
Вы можете получить доступ к одному параметру @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, Провайдеры
Непроанализированная часть запроса URI запроса может быть получена из
UriInfo
объекта:@GET public Representation get(@Context UriInfo uriInfo) { String query = uriInfo.getRequestUri().getQuery(); ... }
источник
Добавляем еще немного к принятому ответу. Также можно получить все параметры запроса следующим образом, не добавляя дополнительный параметр к методу, что может быть полезно при ведении документации по swagger.
@Context private UriInfo uriInfo; @POST public Response postSomething(@QueryParam("name") String name) { MultivaluedMap<String, String> queryParams = uriInfo.getQueryParameters(); String nameParam = queryParams.getFirst("name"); }
ссылка
источник