我正在处理 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 响应
最佳答案
在这种特殊情况下,是返回Response
还是抛出映射异常,我说这只是一个偏好问题。但在某些情况下,返回 Response
是不可能的,例如,如果您绑定(bind)到接口(interface)协定,返回类型不是 Response
,或者您不在资源方法的上下文,比如在过滤器或拦截器中。
如果您需要抛出异常并且不可能返回Response
(或者您宁愿抛出异常),如果您查看WebApplicationException
的构造函数,您会注意到它有一个构造函数,但 Response
除外。如果抛出异常,这确实是添加正文的唯一方法(除非您使用 mapper )。
关于java - 在失败和错误情况下使用什么 : WebApplicationException vs Response?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30948966/