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

Hun*_*unt 12 arrays jax-rs parameter-passing

我有很多参数可以使用JAX-RS传递给服务器.

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

joe*_*ohn 7

你有几个选择.

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

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

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

这里请求参数param1有三个值,容器将允许您作为数组访问所有三个值(请参阅查询字符串结构).

选项2:提供PUT正文中的复杂数据

如果需要在PUT请求中提交复杂数据,通常通过在请求正文中提供该内容来完成.当然,这个有效载荷可以是xml(并通过JAXB绑定).


请记住,URI的目的是识别资源(RFC 3986,3.4),如果这个值数组是识别资源所需的数据,那么URI就是一个好地方.另一方面,如果此数组数据构成此PUT请求中提交的新表示的一部分,则它属于请求正文.

话虽如此,除非你真的只需要一组简单的值,我建议选择Option 2.我想不出在URL中使用URL编码的XML的好理由,但我会感兴趣更多地了解这些数据的确切含义.