将数组作为参数传递给JAX-RS资源

时间:2011-03-30 09:00:38

标签: arrays jax-rs parameter-passing

我有很多参数要使用JAX-RS传递给服务器。

有没有办法通过URL传递或AarryList?

2 个答案:

答案 0 :(得分:7)

这里有几个选项。

选项1:具有多个值的查询参数

可以为单个查询参数提供多个简单值。例如,您的查询字符串可能如下所示:

PUT /path/to/my/resource?param1=value1&param1=value2&param1=value3

此处请求参数param1有三个值,容器将允许您以数组的形式访问所有三个值(请参阅Query string structure)。

选项2:在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);
}