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

时间:2016-04-05 14:31:49

标签: java jersey

对我的应用程序的请求发送AuthToken标头参数。

无论如何我可以使用Jersey自动反序列化并将其解码为下面的POJO吗?

@POST
public Response postSomething(@HeaderParam("AuthToken") AuthToken token) {
    log.info("User " + token.getUser() + " posted something");
}

注意:我目前正在使用Jersey 1.x。

1 个答案:

答案 0 :(得分:2)

Jersey 1.x有一些可能的解决方案:

创建构造函数

创建一个接受String类中的单个AuthToken参数的构造函数:

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.   
  3. 拥有一个接受单个String参数的构造函数
  4.   
  5. 有一个名为valueOffromString的静态方法,它接受一个String参数(例如,参见Integer.valueOf(String)
  6.   
  7. List<T>Set<T>SortedSet<T>,其中T满足上述2或3。生成的集合是只读的。
  8.         

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

         

    [...]