Jax-RS:从REST调用中获取错误消息?
问题描述:
我使用Jax-RS
作为我的REST
框架。如果失败,我希望能够从其余呼叫中提取错误消息(即,发生500错误)。最好的办法是什么?Jax-RS:从REST调用中获取错误消息?
E.g.当我把我的电话POSTMAN
,并得到一个错误我得到了以下的500:
{
"reason": "No data retrieved for GET call",
"response": "failure"
}
我怎样才能找回我的代码信息,在呼叫失败的情况下?
答
如果你正在寻找的是能够解析:
这种反应是称为文本格式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();
}
}
你是什么意思你是如何检索码?解析json并阅读原因? – Optional
我在此之前收到500错误,我现在编辑我的问题 – java123999
请编辑并发布样本。 – Optional