Я создаю общий веб-сервис, и мне нужно собрать все параметры запроса в одну строку для последующего анализа. Как я могу это сделать?
Как я могу получить все параметры запроса в Jersey JaxRS?
Ответы (4)
Вы можете получить доступ к одному параметру через @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");
}
мы можем отправить значение клиента на сервер, используя параметр запроса, например
http://localhost:8080/JerseyDemo/rest/user/12?p=10
Здесь p — значение параметра запроса. мы можем получить это значение, используя аннотацию @QueryParam(p)
public adduser(@QueryParam("p") int page){
//some code
}
Иногда мы отправляем список значений в параметре запроса, например
http://localhost:8080/JerseyDemo/rest/user/12?city=delhi&country=india&city=california
В этом случае мы можем получить все параметры запроса, используя @Context UriInfo.
public String addUser( @Context UriInfo uriInfo){
List<String> cityList = uriInfo.getQueryParameters().get("city");
}
Вы можете увидеть полный пример с более подробной информацией - аннотация QueryParam в Джерси Здесь вы увидите больше других методов для получения параметра запроса в трикотаже.