Jax-RS:从REST调用中获取错误消息?

问题描述:

我使用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

如果你正在寻找的是能够解析:

这种反应是称为文本格式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(); 
    } 
}