我正在使用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响应
答案 0 :(得分:2)
在这种特殊情况下,是否返回Response
或抛出映射异常,我说这只是一个偏好问题。但是有些情况下无法返回Response
,例如,如果您绑定到接口契约,其中返回类型不是Response
,或者您不在资源方法的上下文中,比如过滤器或拦截器。
如果你需要抛出一个异常并且无法返回Response
(或者你只是抛出异常),那么如果你看一下WebApplicationException
的构造函数,你就是'请注意它有一个超出Response
的构造函数。如果抛出异常,这是添加正文的唯一方法(除非你使用mapper)。