对我的应用程序的请求发送AuthToken
标头参数。
无论如何我可以使用Jersey自动反序列化并将其解码为下面的POJO吗?
@POST
public Response postSomething(@HeaderParam("AuthToken") AuthToken token) {
log.info("User " + token.getUser() + " posted something");
}
注意:我目前正在使用Jersey 1.x。
答案 0 :(得分:2)
Jersey 1.x有一些可能的解决方案:
创建一个接受String
类中的单个AuthToken
参数的构造函数:
public class AuthToken {
public AuthToken(String content) {
// Parse the token here
}
...
}
valueOf
或fromString
方法创建一个名为valueOf
或fromString
的静态方法,该方法接受一个String
参数:
public class AuthToken {
public static AuthToken valueOf(String content) {
// Parse the token here and return an AuthToken instance
}
...
}
有关详细信息,请查看Jersey 1.x的@HeaderParam
文档:
将HTTP标头的值绑定到资源方法参数,资源类字段或资源类bean属性。可以使用
DefaultValue
注释指定默认值。注释参数,字段或属性的类型T
必须:
- 是原始类型
- 拥有一个接受单个
String
参数的构造函数- 有一个名为
valueOf
或fromString
的静态方法,它接受一个String
参数(例如,参见Integer.valueOf(String)
)- 为
醇>List<T>
,Set<T>
或SortedSet<T>
,其中T
满足上述2或3。生成的集合是只读的。如果类型不是上面4中列出的类型之一,则使用标题的第一个值(词法)。
[...]