2015-06-20 78 views
3

我正在處理休息服務,如果發生故障/錯誤,我應該使用ResponseWebApplicationException在失敗和錯誤情況下使用什麼:WebApplicationException vs Response?

下面是一個示例,我正在使用Response來返回400錯誤請求錯誤消息以及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話,我怎麼可以用它來與一個JSON響應

回答

2

在這種特殊情況下,一起返回400錯誤的請求錯誤消息是否返回Response或拋出一個映射例外,我說的是剛剛一個偏好問題。但有些情況下不可能返回Response,例如,如果您綁定到接口協定,返回類型不是Response,或者您不在資源方法的上下文中(例如在過濾器或攔截器中)。

如果您需要拋出異常並且不可能返回Response(或者您只是拋出異常),如果您查看WebApplicationException的構造函數,您會注意到它具有構造函數除了一個Response。這是真正的唯一方法來添加一個正文,如果拋出異常(除非你使用mapper)。

相關問題