返回自定义对象并在JAX-RS中控制响应代码

时间:2012-01-15 14:47:47

标签: jersey

我在我的Web应用程序中使用JAX-RS来返回我自己的对象。 我想继续这样做,但我想设置HTTP响应代码(例如401用于未授权等)。 根据我发现的信息,似乎我必须返回类型Response而不是我的自定义对象。 这是对的吗?

我当前的代码(简化) - 当 MyReponse 是Jaxb知道如何处理的对象时:

@POST
@Produces({MediaType.APPLICATION_XML , MediaType.APPLICATION_JSON})
public MyResponse RegisterUser (
        @FormParam("userName") String userName,
        @FormParam("password") String password) {
    // add user logic
    return new MyResponse(....<params to ctor...);
  }

2 个答案:

答案 0 :(得分:3)

是的,你是对的。

你需要使用类似的东西:

@POST
@Produces({MediaType.APPLICATION_XML , MediaType.APPLICATION_JSON})
public Response RegisterUser (
    @FormParam("userName") String userName,
    @FormParam("password") String password) {
    // add user logic
    return Response.status(401).entity(new MyResponse(...)).build();
}

请参阅http://jersey.java.net/nonav/documentation/latest/jax-rs.html#d4e355(及其他章节)以获取更多有用信息。

答案 1 :(得分:0)

您可以在覆盖getStatus()方法时扩展Response类并返回自定义状态。