2017-10-10 53 views
-1

我使用Jax-RS作爲我的REST框架。如果失敗,我希望能夠從其餘呼叫中提取錯誤消息(即,發生500錯誤)。最好的辦法是什麼?Jax-RS:從REST調用中獲取錯誤消息?

E.g.當我把我的電話POSTMAN,並得到一個錯誤我得到了以下的500:

{ 
    "reason": "No data retrieved for GET call", 
    "response": "failure" 
} 

我怎樣才能找回我的代碼信息,在呼叫失敗的情況下?

+0

你是什麼意思你是如何檢索碼?解析json並閱讀原因? – Optional

+0

我在此之前收到500錯誤,我現在編輯我的問題 – java123999

+0

請編輯併發布樣本。 – Optional

回答

1

如果你正在尋找的是能夠解析:

這種反應是稱爲文本格式JSON(JavaScript對象符號)

使用JSON解析庫如GSON

String json = //..... get the api response as a String .... 
APIResponse response = new Gson().fromJson(json, APIResponse.class); 

使用的ApiResponse看起來像:

public class APIResponse { 

    public String reason; 
    public String response; 

    public void setReason(String reason) { 
     this.reason = reason; 
    } 

    public String getReason() { 
     return this.reason; 
    } 

    public void setReason(String reason) { 
     this.response = response; 
    } 

    public String getResponse() { 
     return this.response; 
    } 
} 

在另一方面,如果這是從你的API來響應你正在尋找處理:看看JAX-RS Exception Handling

您可以實現ExceptionMapper接口:

public interface ExceptionMapper<E extends Throwable> { 
    Response toResponse(E exception); 
} 

並註冊處理異常的@Provider

@Provider 
public class EntityNotFoundMapper implements ExceptionMapper<Exception> { 

    public Response toResponse(Exception e) { 
     // Do some logic like log an error 
     return Response.status(Response.Status.NOT_FOUND).build(); 
    } 
}