0

是否可以让 Jersey 采用一系列 HTTP 标头并将它们编组为 POJO,就像使用 POST 参数一样?

4

4 回答 4

4

如果您使用的是 jersey 1.x,那么您可以使用 @InjectParam,但我建议您升级到 2.x 并开始使用 @BeanParam

于 2015-05-01T13:32:51.863 回答
2

如果您想访问特定@HeaderParam的 as a String,请使用@Juned Ahsan 或@DJ Spiess 提供的答案。如果你想将它们注入 POJO,我建议@BeanParam在 2.x 中使用 Jersey's。

例如:

@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;
    }
}

@BeanParam可以替换@InjectParam为 Jersey 1.x (>=1.4) 或@Inject早于 1.4 的 1.x。@Inject如果您使用的是 Spring 等依赖注入框架,也可以使用javax- 。

于 2013-07-17T17:33:40.413 回答
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();

    }

}
于 2013-07-17T15:05:28.390 回答
0

是的,您可以使用@HeaderParams

于 2013-07-17T14:19:34.947 回答