2015-08-13 59 views

回答

1

考慮使用HTTP響應代碼與(可能的)JSON響應機構提供任何所需的信息,所以客戶端應用程序可以相應地做出反應。

+0

1)我問異常映射器techstack中,使用異常映射是正確的做法? –

0

如果您使用的JAX-RS REST Web服務,您可以配置Spring @Controller。你的方法應該產生application/json在這個例子中返回Response對象,如:

@GET 
@Path("/get/{id}") 
@Produces(MediaType.APPLICATION_JSON) 
public Response getUserById(@PathParam("id") String userId) { 

     // Here your logic 

     Foo foo = new Foo(); 
     foo.setMsg("Bad Request"); 
     foo.setData("User " + userId + " not found") 

     return Response.status(400).entity(foo).build(); 
    } 

而且從AJAX,可以捕獲錯誤消息

// Get user details 
$.getJSON(encodeURI("./rest/user/get/" + userId), function(data) { 

    // Some logic on success 

    // Fail 
}).fail(function(jqxhr) { 
    console.log(jqxhr.responseJSON.msg); 
}); 
+0

1)我在問關於異常映射器,是否使用異常映射器是正確的方法? –

+0

那麼,當動作不受你控制時(例如對象類型,權限,語法),將使用異常來引發異常。但對於REST服務,您需要手動驗證輸入數據並返回「警告」信息,如錯誤的數字,字符串值...我使用異常映射只登錄請求過程中出現服務器錯誤...... – Valijon

1

考慮使用WebapplicationException。你可以給它Errorcode(也是自定義的)和一個響應體。如果你有一個複雜的結構來顯示你的錯誤,你可以使用JSON格式,但我會建議使用一個錯誤消息(例如在請求不好的情況下,請求的哪部分是壞的)。

+0

1)I我問關於異常映射器,是否使用異常映射器是正確的方法? –

0

有一對夫婦的方式。 1.您可以查看從Web服務收到的響應狀態。以2 **開頭的狀態是成功響應(例如200,201),以4 **或5 **開頭的狀態是錯誤。

  1. 但是,處理和跟蹤異常的最佳方式是使用ExceptionMapper。您可以編寫自己的類,它實現ExceptionMapper象下面這樣:

    @Provider 
    public class GenericExceptionMapper implements ExceptionMapper<Throwable> { 
    
    @Override 
    public Response toResponse(Throwable arg0) { 
    
    return Response.status(Status.INTERNAL_SERVER_ERROR) 
         .entity("Custom Exception: Error retrieving data") 
         .build(); 
    } 
    
    } 
    

您可以編寫自己的自定義異常像下面或者拋出異常毯像下面。但上述方法是首選。

@Provider 
public class GenericExceptionMapper implements ExceptionMapper<Throwable> { 

@Override 
public Response toResponse(Throwable arg0) { 

    return Response.status(Status.INTERNAL_SERVER_ERROR) 
      .entity("Custom Exception: Error retrieving data") 
      .build(); 
} 

}