是否可以让Jersey使用一系列HTTP标头并将它们编组到POJO中,就像使用POST参数一样?
答案 0 :(得分:4)
如果你正在使用jersey 1.x那么你可以使用@InjectParam, 但我建议你升级到2.x并开始使用@BeanParam
答案 1 :(得分:2)
如果您希望以@HeaderParam
的身份访问特定的String
,请使用@Juned Ahsan或@DJ Spiess提供的答案。如果你想将它们注入POJO,我建议你在2.x中使用泽西岛的@BeanParam
。
例如:
@Path("/foo")
public class FooResource {
@GET
@Path("/bar")
public void bar(@BeanParam MyBean myBean) {
// Do something
}
}
public class MyBean {
private String uaCompatible;
public MyBean(@HeaderParam("X-UA-Compatible") String uaCompatible) {
this.uaCompatible = uaCompatible;
}
public String getUacompatible() {
return this.uaCompatible;
}
}
对于泽西1.x(> = 1.4),@BeanParam
可以替换为@InjectParam
,而在1.4之前的1.x中,@Inject
可以替换为@Inject
。如果您正在使用依赖注入框架(如Spring),也可以使用javax - {{1}}。
答案 2 :(得分:1)
是的,你会这样做的。 (来自http://www.mkyong.com/webservices/jax-rs/get-http-header-in-jax-rs/)
@Path("/users")
public class UserService {
@GET
@Path("/get")
public Response addUser(@HeaderParam("user-agent") String userAgent) {
return Response.status(200)
.entity("addUser is called, userAgent : " + userAgent)
.build();
}
}
答案 3 :(得分:0)
是的,您可以使用@HeaderParams