Я создаю общий веб-сервис и должен захватить все параметры запроса в одну строку для последующего синтаксического анализа. Как я могу это сделать?
Как я могу захватить все параметры запроса в 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");
}