使用Jersey 1.x将HeaderParam反序列化为POJO



请求我的应用程序发送一个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
    }
    ...
}

创建valueOffromString方法

创建一个名为valueOffromString的静态方法,该方法接受单个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必须为:

  1. 是基元类型
  2. 有一个接受单个String参数的构造函数
  3. 有一个名为valueOffromString的静态方法,它接受单个String参数(例如,请参见Integer.valueOf(String)
  4. List<T>Set<T>SortedSet<T>,其中T满足以上2或3。生成的集合是只读的

如果类型不是上面4中列出的类型之一,则使用标头的第一个值(词汇)。

[…]

最新更新