У меня есть много параметров, которые можно передать на сервер с помощью JAX-RS.
Есть ли способ передать или AarryList с URL?
У меня есть много параметров, которые можно передать на сервер с помощью JAX-RS.
Есть ли способ передать или AarryList с URL?
У вас есть несколько вариантов.
Вы можете предоставить несколько простых значений для одного параметра запроса. Например, строка запроса может выглядеть так:
PUT /path/to/my/resource?param1=value1¶m1=value2¶m1=value3
Здесь параметр запроса param1
имеет три значения, и контейнер предоставит вам доступ ко всем трем значениям в виде массива (см. Строка строки запроса).
PUT
Если вам нужно отправить сложные данные в запрос PUT
, это обычно делается, поставляя этот контент в тело запроса. Конечно, эта полезная нагрузка может быть xml (и связана через JAXB).
Помните, что точкой URI является идентификация ресурса (RFC 3986, 3.4), и если этот массив значений - это данные, которые необходим для идентификации ресурса, тогда URI является хорошим местом для этого. Если, с другой стороны, этот массив данных является частью нового представления, которое отправляется в этом запросе PUT
, то оно принадлежит к телу запроса.
Сказав это, если вам действительно не нужен массив простых значений, я бы рекомендовал выбрать вариант 2. Я не могу придумать вескую причину использования URL-кодированного XML в URL-адресе, d быть заинтересованным узнать больше о том, что именно эти данные.
Мы можем получить параметры запроса и соответствующие значения в виде Карты,
@GET
@Produces(MediaType.APPLICATION_JSON)
public void test(@Context UriInfo ui) {
MultivaluedMap<String, String> map = ui.getQueryParameters();
String name = map.getFirst("name");
String age = map.getFirst("age");
System.out.println(name);
System.out.println(age);
}