【发布时间】:2011-07-25 22:44:34
【问题描述】:
我有很多参数要使用 JAX-RS 传递给服务器。
有没有办法通过 URL 或 AarryList 传递?
【问题讨论】:
-
是否有可能从客户端我们将参数作为 xml 作为 PUT 方法发送,而在服务器端我们可以使用 JAXBElement 接收它(包装为对象)
标签: arrays jax-rs parameter-passing
我有很多参数要使用 JAX-RS 传递给服务器。
有没有办法通过 URL 或 AarryList 传递?
【问题讨论】:
标签: arrays jax-rs parameter-passing
这里有几个选项。
您可以为单个查询参数提供多个简单值。例如,您的查询字符串可能如下所示:
PUT /path/to/my/resource?param1=value1&param1=value2&param1=value3
这里的请求参数param1 有三个值,容器将允许您以数组的形式访问所有三个值(参见Query string structure)。
PUT 正文中提供复杂数据如果您需要在 PUT 请求中提交复杂的数据,这通常通过在请求正文中提供该内容来完成。当然,这个payload可以是xml(通过JAXB绑定)。
记住 URI 的重点是识别资源 (RFC 3986, 3.4),如果这个值数组是识别资源所需的数据,那么 URI 是一个很好的地方。另一方面,如果此数据数组构成了在此 PUT 请求中提交的新表示的一部分,则它属于请求正文。
话虽如此,除非您真的只需要一组简单值,否则我建议选择选项 2。我想不出在 URL 中使用 URL 编码 XML 的充分理由,但我' d 有兴趣详细了解这些数据到底是什么。
【讨论】:
我们可以将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);
}
【讨论】: