我有一个示例代码:
@PUT
public String method(@FormParam("firstName") String firstName,
@FormParam("lastName") String lastName ) {
Person person = new Person(firstName, lastName);
// ...
}
我想停止使用@FormParams并改为使用Person:
@PUT
public String method(@Person person) {
// ...
}
最好的方法是什么?
我正在尝试使用自定义BodyReader,但我必须在readFrom
方法中“手动”解析InputStream。
这是正确的方法吗?如果是,将InputStream转换为KEY =>的最佳方法是什么? VALUE HashMap?
答案 0 :(得分:5)
有一个@BeanParam选项,请参阅:
https://jersey.java.net/documentation/latest/jaxrs-resources.html#d0e1905
答案 1 :(得分:3)
您有两种选择:
person
参数。在JAX-RS规范中,这称为实体参数,REST方法中必须有一个这样的参数,然后由注册的实体提供者自动解码。Person
类,使其构造函数接收单个String作为参数,并接收构造函数中的解码。摘自here:
通常,方法参数的Java类型可以是:
是原始类型; - 有一个接受单个的构造函数 字符串参数;
有一个名为valueOf或fromString的静态方法,它接受一个String参数(例如,参见Integer.valueOf(String)和 java.util.UUID.fromString(字符串));
有一个javax.ws.rs.ext.ParamConverterProvider JAX-RS扩展SPI的注册实现 返回一个能够来自"的javax.ws.rs.ext.ParamConverter实例 字符串"转换类型。或
Be List,Set或SortedSet,其中T满足上面的2或3。生成的集合是只读的。