gpt4 book ai didi

java - JAX-RS:将响应转换为异常

转载 作者:塔克拉玛干 更新时间:2023-11-03 05:21:23 25 4
gpt4 key购买 nike

我正在使用 JAX-RS 客户端来使用 REST API。我不想让 JAX-RS 抛出一堆异常,所以我自己检查 Response 对象。然而,有时候,我只关心某些状态代码,我希望 JAX-RS 回退到默认行为并抛出一个实际的异常(这将由 AOP 建议处理)。有没有一种简单的方法可以做到这一点?

public void delete(long id) {
Response response = client.delete(id);
Response.Status status = Response.Status.fromStatusCode(response.getStatus());

if (status == Response.Status.OK) {
return;
}
if (status == Response.Status.NOT_FOUND) {
throw new TeamNotFoundException();
}
if (status == Response.Status.CONFLICT) {
throw new TeamHasAssignedUsersException();
}

// if status was internal server error or something similar,
// throw whatever exception you would throw at first place
// magic.throwException(response)
}

最佳答案

JAX-RS API 不支持将响应转换为异常。如果您检查 JerseyInvocation.convertToException()方法,您将看到在 Jersey 中它是一个简单的开关,可将 Response 状态转换为相应的 Exception。

所以,您在这里有两个选择:

  1. 如果您需要一个实体主体,您可以调用 webTarget.get(MyEntity.class)。当然你可以捕获所有WebApplicationException在单个 catch 子句中,因为所有异常都会扩展它(例如检查 BadRequestException )。
  2. 或者您在代码中使用类似的 switch 子句,就像 jersey made 一样。

关于java - JAX-RS:将响应转换为异常,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22908335/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com