rest - REST api返回404时如何使用readEntity解析json
问题描述
Silverpop REST API 返回如下 JSON 消息:
{
"meta": {
"attributes": {},
"generalErrors": ["Consent not found"],
"fieldErrors": {},
"links": [],
"nextPageUrl": null
},
"data": null
}
如果它没有找到记录,它会返回 404 与上述 JSON 但与
“generalErrors”:[“未找到联系人”]
如果 URL 缺少参数,则返回 404
"generalErrors": ["找不到参数"]
如果找不到数据库(一个重大错误),它会返回 404
“generalErrors”:[“找不到数据库”]
在我的代码中,我试图将响应 JSON 解析为一个对象,但问题是如果响应为 404,解析根本不会执行此操作。我需要将响应放入一个对象中,以便我可以解析出错误消息并决定从那里做什么(即如果找不到它的联系人,这是正常的,还是错误的)。代码是这样的:
RestApiResponseDO responseDO = response.readEntity(RestApiResponseDO.class);
如果状态为 404,则结果responseDo
为空(未设置字段)
不管状态码是什么,有没有办法强制它解析响应?
另一种策略可能是将响应读入字符串,然后解析字符串。但是,readEndity
不接受字符串,所以假设它必须转换回流或类似的?有人做过吗?
解决方案
如果 ,您可以编写一个Error
您response.readEntity(Error.class)
形成的课程response.statusCode == 404
,否则您可以像现在一样继续。
Error
也可以是专门用于ConsentNotFoundError
or的抽象类型或接口ParameterNotFoundError
。或者它可能是一个具体类型,返回一个像SilverpopErrors.CONSENT_NOT_FOUND
.
我想知道为什么“找不到数据库”返回一个404
, 4xx 信号客户端做错了,但与数据库相关的错误将是 5xx。请求中缺少的 URL 应该是400
错误请求。
推荐阅读
- python - 比较字符串的方法
- javascript - 将 HTML 表单输入保存到 Javascript 变量
- python - 下拉列表更改时,短划线散点图未更新
- sql - 我很难从具有别名的列中计算百分比
- windows - 无法通过自定义 url 协议打开本地 pdf 文件
- vb.net - 我正在尝试生成两个随机的 3 位素数并在 VB.NET 上使用 RSA 方法创建一个函数
- wordpress - 不能在模块外使用 import 语句 - Timber Starter Theme - Gulp
- google-sheets - 如何将 1 个单元格与多个其他单元格组合并向下拖动?
- swift - 类型“PersonInfo”不符合协议“可解码”
- makefile - 尽管包含和 lib 规范 g++ 找不到库