有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

java JaxRS:从REST调用获取错误消息?

我正在使用Jax-RS作为我的REST框架。如果rest调用失败(即出现500个错误),我希望能够从rest调用中提取错误消息。最好的方法是什么

例如,当我在POSTMAN中打电话时,发现一个错误,我用500得到以下信息:

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

在调用失败的情况下,如何在代码中检索这些信息


共 (1) 个答案

  1. # 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();
       }
    }