我有很多参数要使用JAX-RS传递给服务器。
有没有办法通过URL传递或AarryList?
答案 0 :(得分:7)
这里有几个选项。
您可以为单个查询参数提供多个简单值。例如,您的查询字符串可能如下所示:
PUT /path/to/my/resource?param1=value1¶m1=value2¶m1=value3
此处请求参数param1
有三个值,容器将允许您以数组的形式访问所有三个值(请参阅Query string structure)。
PUT
正文如果您需要在PUT
请求中提交复杂数据,通常可以通过在请求正文中提供该内容来完成。当然,这个有效载荷可以是xml(并通过JAXB绑定)。
请记住,URI的目的是识别资源(RFC 3986, 3.4),如果这个值数组是识别资源所需的数据,那么URI就是一个好地方。另一方面,如果此数组数据构成了在此PUT
请求中提交的新表示的一部分,则它属于请求正文。
话虽如此,除非你真的需要一组简单的值,否则我建议选择Option 2.我想不出在URL中使用URL编码的XML的好理由,但是我有兴趣了解更多关于这些数据的确切内容。
答案 1 :(得分:1)
我们可以将Query参数和相应的值作为Map获取,
@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);
}