【问题标题】:What to use in failures and error case: WebApplicationException vs Response?在失败和错误情况下使用什么:WebApplicationException vs Response?
【发布时间】:2015-09-06 01:48:54
【问题描述】:

我正在开发 Rest 服务,如果出现故障/错误,我应该使用 Response 还是 WebApplicationException

下面是一个示例,我使用 Response 返回 400 Bad Request 错误消息以及错误的 JSON 响应。

@GET
@Path("/data")
@Produces(MediaType.APPLICATION_JSON)
public Response getData(@Context UriInfo uriInfo) {
    String client = getClientId();
    if (client == null || client.isEmpty()) {
        return Response.status(HttpServletResponse.SC_BAD_REQUEST)
                .entity("{\"error\": \"client id is null or empty\"}").build();
    }

    // some code and return succesfull response

    return Response
            .status(HttpServletResponse.SC_OK)
            .entity(resp.getResponse()).build();
}

在这里做什么是正确的?如果我需要使用WebApplicationException,那么如何使用它来返回 400 Bad Request 错误消息以及 JSON 响应

【问题讨论】:

    标签: java json rest jersey jax-rs


    【解决方案1】:

    在这种特殊情况下,是否返回 Response 或抛出映射异常,我说只是偏好问题。但是在某些情况下,返回 Response 是不可能的,例如,如果您绑定到接口契约,返回类型不是 Response,或者您不在资源方法的上下文中,例如在过滤器或拦截器。

    如果您需要抛出异常并且无法返回 Response(或者您宁愿抛出异常),如果您查看 WebApplicationException 的构造函数,您会注意到它有一个除了Response 的构造函数。如果抛出异常,这确实是添加正文的唯一方法(除非您使用mapper)。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2010-10-01
      • 1970-01-01
      • 2012-06-01
      • 2016-04-05
      相关资源
      最近更新 更多