请求我的应用程序发送一个AuthToken
头参数。
我是否可以使用Jersey自动反序列化并将其解码为如下POJO?
@POST
public Response postSomething(@HeaderParam("AuthToken") AuthToken token) {
log.info("User " + token.getUser() + " posted something");
}
注意:我目前使用的是Jersey 1.x.
Jersey 1.x:有一些可能的解决方案
创建构造函数
在AuthToken
类中创建一个接受单个String
参数的构造函数:
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中列出的类型之一,则使用标头的第一个值(词汇)。
[…]