java - Java:当抛出异常并使用 ExceptionMapper 时,客户端会收到什么 REST 响应?
问题描述
我试图了解 ExceptionMapper 的工作原理。
假设我定义了一个 REST 服务,它返回扩展 BaseResponse 的 XYZResponse。我还定义了一个 ExceptionMapper,它返回一个扩展 BaseResponse 的 FailureResponse。
如果发生异常,客户端会收到什么响应?
客户端不应该能够期望总是得到一个 XYZResponse,因为它是在 REST 方法的签名中定义的?如果发生异常,客户端会收到一个 FailureResponse 吗?因此,客户端只能依赖始终接收 BaseResponse 吗?
更新
我测试过:
@Test
public void figureOutResponse()
{
BaseResponse response = null;
try
{
response = occurrenceExportResourceUT
.getStatus(UUID.randomUUID(),4);
}catch (Exception e)
{
System.out.println("Response: " + response);
System.out.println("Message: " + e.getMessage());
}
}
结果:
Response: null
Message: HTTP 404 Not Found
因此,FailureResponse 似乎从未收到过。那么 FailureResponse 有什么用呢?应该收到吗?结果是否意味着 ExceptionWrapper 设置不正确?
解决方案
如果您使用异常映射器捕获异常,您可能希望设置一个合适的 http 状态代码以指示出现问题。然后你可以实现你的客户端来检查http状态码并解析相应的响应。(基本上,您制定了一个“合同”,对于 http 状态代码 xxx,您将返回 ResponseX,对于 http 状态代码 yyy,您将返回 ResponseY)
推荐阅读
- javascript - 在可滚动元素中使用浏览器后退按钮进行导航
- android - 我是否需要在我的应用程序的每个活动中添加 Firebase 分析代码?
- python - kivy:滚动视图滑动事件中的轮播变得很难
- python - 当我在不同的文件中访问某个函数时,我收到一条错误消息,指出该函数未定义
- c - GDB 仍然显示变量
即使在 gcc (v7 & v9.3.1) -O0 优化关闭之后 - javascript - threejs glft 模型奇怪的线条
- python - Python 正则表达式精确匹配三个字符
- python - CNN 模型在达到 50% 的准确率后过度拟合数据
- react-native - React Native - 如何创建正确的依赖检查/漏洞报告并处理它?
- php - 无法在 Codeigniter 中更新 RAW 查询