java - Rest Api 对成功和失败有不同的响应
问题描述
我在我的代码中使用了非常旧的第 3 方 API,例如在成功和失败的情况下返回不同的响应
为了成功
SuccessResObj{
a{...
b{...
c{...}
}
}
}
实际 SuccessResObj 有大约 10-15 个嵌套对象。
失败
FailureResObj{
status="failure because of ...";
code="400"; // code will always be 400 in case of failure, irrespective of reason of failure
}
FailureResObj 只有 2 个变量。
我知道它是错误的,但第 3 方 API 不会改变那里的响应,我必须在我的代码中解决问题,我应该如何处理它,因为我需要在数据库中记录这两种情况。
编辑
我尝试创建一个 WrapperBean
WrapperBean{
SuccessResObj;
FailureResObj;
}
WrapperBean=ApiResonse();
然后它的 ClassCastExcaption 因为响应只是一种类型的对象,我试图将它与具有 2 个对象的 WrapperBean 映射。
此类响应的示例处理代码将不胜感激。
可以简单地将其视为一种随机返回 2 种不同类型响应的方法。应该如何处理。
解决方案
当您使用RestTemplate
时,RestTemplate 将HttpClientErrorException
在没有 200 HTTP 状态的情况下抛出。
这是示例代码:
try {
String successResponse = restTemplate.exchange(uri, httpMethod, httpEntity, String.class);
// convert String in to Object using object mapper
} catch (HttpClientErrorException e) {
if (e.getStatusCode().value() == 400) {
String errorResponse = e.getResponseBodyAsString();
// convert String in to Object using object mapper
}
}
}
有关更多信息,请ObjectMapper
查看此
推荐阅读
- java - 为什么 maven 在 Mac Big Sur 中没有显示正确的操作系统版本
- freepascal - 连接 g77 和自由帕斯卡
- r - 如何将在 Google Colab 上运行的 R 脚本集成到 NodeJS 应用程序中?
- javascript - 如何仅将类添加到正文中的路线
- python - 为什么我的 for 循环只在 while 循环内运行?
- javascript - 如何在前端和后端之间共享 webpack 结果?
- typescript - 如何检查 Typescript 中的参数类型?
- json - 如何推断 Spark SQL 中序列化 JSON 列的模式?
- java - 无法将 Android Studio 与 SQL Server 连接
- performance - 我应该用 filesMatch 附上 RewriteRule 吗?