java - 贾克斯-RS : Getting error message from REST call?

标签 java rest error-handling jax-rs postman

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

例如。当我调用 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();
   }
}

关于java - 贾克斯-RS : Getting error message from REST call?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46665324/

相关文章:

java - 已编译.Jar Crashes(无Java控制台),但在Eclipse中编译并运行?

java - 如何为 Jira WADL 生成 Java 客户端?

c# - 在 .Net 中是否有可能在类中的任何方法传递给调用堆栈之前捕获所有未处理的异常?

c - C 语言中 Scala 的 Option 或 Rust 的 Result 错误处理

c++ - Xerces:如何使用 ErrorHandler 检查 XML 文件的有效性

java - 改造 2 - URL 查询参数

java - 读取 JAR 文件内的文件

rest - http-only 站点来测试 REST 请求?

javascript - 我如何知道获取数据时出现 401 错误?

rest - 存储在数据库中的 session 真的违反了 RESTful 吗?